所以,我正在尝试匹配 2 个不同的数组。如果相同的单元格匹配,我想使用 .slice 方法从一个数组中删除该单元格。
编辑:如果 array2 包含匹配的数字,我想做的是从 array1 中删除一个数字。该代码现在的工作方式是仅删除 1 个条目。我希望从第一个数组中删除所有条目。
array1 = [1, 2, 4, 5, 7, 10];
array2 = [1,2,4,5,6,7,8];
var misc = function deleteValues(array, arayy) {
for(var i = 0; i < array.length; i++) {
if ( arayy[i] == array[i]) {
array.splice(i, 1);
}
}
return array;
};
我尝试运行它,在控制台日志下,array1 没有变化。拼接方法似乎没有去除任何细胞。我搜索了 SE,但找不到任何可以帮助我的内容。
最佳答案
问题是您在迭代时修改了其中一个数组,但仍然使用相同的索引。最终结果是,在第一次删除后,您最终会相互比较错误的索引。使用两个索引,在删除一项时让一个索引向下偏移,并让另一个简单地迭代。
var misc = function deleteValues(array, arayy) {
for(var i = 0, j = 0; i < array.length; i++, j++) {
if ( arayy[j] == array[i]) {
array.splice(i--, 1);
}
}
return array;
};
关于javascript - 当数组与另一个数组匹配时清空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32341562/