【问题标题】:Delete exact matching array from other array [duplicate]从其他数组中删除完全匹配的数组[重复]
【发布时间】:2019-07-19 02:06:04
【问题描述】:

是否可以从另一个数组中删除一个完全匹配的数组?

两个数组:

let array1: any[] = [[1], [2,3], [1,2]];
let array2: any[] = [[1]];

我想做什么:

function deleteArrayFromArray(array2) {
  // delete given array2 from array1
}

结果应该是:

array1 or new array --> [[2,3], [1,2]]

是否有类似 lodash 的过滤器,但具有精确的数组到数组比较:

_.filter(array1, array2);

【问题讨论】:

  • 如果订单很重要...只需使用JSON.stringify()
  • 我知道他们将其标记为重复,但也许这会对您的具体情况有所帮助。 function deleteArrayFromArray(array1, array2) { return array1.map(JSON.stringify).filter((x) => !array2.map(JSON.stringify).includes(x)).map(JSON.parse) }deleteArrayFromArray( [[1], [2,3], [1,2]], [[1]]) 使用 es6 的函数式方法。

标签: javascript arrays typescript lodash


【解决方案1】:

您可以过滤一个数组并将对象与 JSON.stringify 与第二个数组进行比较,然后使用slice 方法从一个数组中删除,

let array1 = [[1], [2,3], [1,2]]

let array2 = [[1]];
//console.log(array1);    
array1.filter(function(obj) {
 // JSON.stringify(obj)==JSON.stringify(obj)
  for( var i=0, len=array2.length; i<len; i++ ){
          if(JSON.stringify(obj)==JSON.stringify(array2[i]) ) {
              array1.splice(i, 1);
             return false;
          }
      }
	return true; 
});
console.log(array1);

【讨论】:

    猜你喜欢
    • 2014-07-19
    • 2017-09-16
    • 2016-01-04
    • 2018-09-26
    • 1970-01-01
    • 2017-12-16
    • 2012-03-09
    • 2019-06-20
    • 2011-10-22
    相关资源
    最近更新 更多