运行此函数时,我不断返回一个只返回第一个参数(a)的数组。最终目标是返回一个与第二个参数(b)匹配的数组,并将其从第一个参数中删除。我在下面提到了两个测试功能。我已经做了一段时间了,看起来它只是忽略了我的“如果'声明。谁能发现原因?我仍然愿意采用更清洁的方式来做这件事,因为我还在学习JavaScript。提前谢谢!
function array_diff(a, b) {
var newArr = [];
for ( i = 0; i < a.length; i++) {
if (b !== a[i]) {
newArr.push(a[i]);
}
}
return newArr;
}
array_diff([1,2,2,2,3],[2]);
array_diff([1,2],[1]);
答案 0 :(得分:0)
问题在于您将数组与值进行比较。
由于a[i]
是一个值,b
也应该是值,而不是数组,所以请尝试
array_diff([1,2,2,2,3],2);
array_diff([1,2],1);
即。 2
代替[2]
和1
代替[1]
另一种方法是改变你的if条件
if (b[0] !== a[i]) {