gpt4 book ai didi

javascript - 为什么我的 for 循环似乎只运行一次?

转载 作者:行者123 更新时间:2023-11-30 11:40:29 25 4
gpt4 key购买 nike

这是 freecodecamps 挑战之一,它通过了过滤器内的 for 循环,通过了数组 newArg 的第一个元素,但没有通过第二个元素,依此类推,因此挑战没有通过,有人可以向我解释原因吗。请不要写任何完整的解决方案,因为我只需要一点帮助来推进。

function destroyer(arr) {
// Remove all the values
var newArg = [];
for (var i=1; i < arguments.length; i++){
newArg.push(arguments[i]);
}


var newArray = arr.filter(function(val){
for (i = 0; i < newArg.length; i++) {
return val !== newArg[i];
}


});
return newArray;



}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

最佳答案

过滤器调用:

var newArray = arr.filter(function(val){
for (i = 0; i < newArg.length; i++) {
return val !== newArg[i];
}
});

等同于:

var newArray = arr.filter(function(val) {
return val !== newArg[0];
});

因为您是从第一次迭代返回的。

解决方案:

您必须将返回语句包装在 if 中,如下所示:

var newArray = arr.filter(function(val){
for (i = 0; i < newArg.length; i++) {
if(val === newArg[i]) { // don't return if val !== newArg[i]
return true; // return only when they're ===
}
}
return false; // default return (nothing is found in the array)
});

或使用替代方案,例如 Array.prototype.some像这样:

var newArray = arr.filter(function(val){
return newArg.some(function(arg) { // return true if some item pass the test (false otherwise)
return arg === val; // the test
})
});

关于javascript - 为什么我的 for 循环似乎只运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42873740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com