每次迭代都从先前的迭代结果开始

时间:2018-10-08 15:41:36

标签: javascript

如何在每次迭代中迭代数组以获取先前的结果?我正在数组B中寻找相同的值,就像在数组A中一样,但是数组A只有一个值,例如for in循环的结果。我想要返回数组C,该数组开始减去数组A中所有项的数组。

到目前为止,我已经有了以下代码:

x = newArray.indexOf(zeme[0]);

for (b = 0; b < newArray.length; b++) {
  if (x === b) {
    newArray.splice(b, zeme.length);
  }
}

带有值:

array B = ['can', 'usa', 'eng'];

array A = ['eng'];
array A = ['can'];

获得结果:

array C = ['can', 'usa']
//first iteration, found 'eng' and deleted.
array C = ['usa', 'eng']
//second iteration found 'can' and deleted.

必填结果:

array C = ['usa']
//after first iteration in array left only two items ['can', 'usa']
//after second iteration take array ['can', 'usa'] and splice 'can'

1 个答案:

答案 0 :(得分:2)

如果

  

我想要返回数组C,该数组开始减去数组A中所有项的数组。

是您问题的要点,听起来像您想要数组交集。

function intersect(a, b) {
    return a.filter((v) => b.indexOf(v) === -1);
}

console.log(intersect(['can', 'usa', 'eng'], ['usa', 'eng']));

输出

['can']

(注意:以上实现未优化;对于大型b数组,它的运行速度可能会非常慢,因为最坏情况下的复杂度是O(n ^ 2)。)