如何在每次迭代中迭代数组以获取先前的结果?我正在数组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'
答案 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)。)