比较两个数组并找到第二个数组中缺少的项目

Ash*_*ani 4 javascript arrays jquery

我有 2 个数组,它们一开始是相同的,但用户可以从第二个数组中删除(不能添加,只能删除)项目。我想找到第一个数组中但不在第二个数组中的项目。

我可以想到几种方法来做到这一点,但由于这些数组可能非常大,我很想知道是否有人可以提供更有效的方法:

$.grep( firstArray, function( n, i ){
  return $.inArray(n, secondArray) == -1;
});
Run Code Online (Sandbox Code Playgroud)

Chr*_*tos 11

您可以尝试使用filterindexOf数组方法如下:

var firstArray = [1,2,3,4,5,6];
var secondArray = [3,4,6];

var result = firstArray.filter(item=>secondArray.indexOf(item)==-1);

console.log(result);
Run Code Online (Sandbox Code Playgroud)

  • 我不明白为什么人们会否决正确答案。如果你没有头绪,就闭嘴学习。这是正确的答案。 (2认同)

Nin*_*olz 6

假设数组具有相同的顺序,那么您可以使用索引作为闭包进行过滤。

var array1 = [1, 2, 3, 4, 5, 6, 7, 1, 2, 3],
    array2 = [2, 4, 6, 7, 2],
    missing = array1.filter((i => a => a !== array2[i] || !++i)(0));
    
console.log(missing);
Run Code Online (Sandbox Code Playgroud)