我在 ELOQUENTJS 书中有一个问题要解决,有人可以帮忙告诉我这段代码有什么问题吗?
这是我到目前为止的代码。
function every(array, test) {
for (let i of array) {
let curArr = array[i];
if (test(curArr)) {
return true;
} else {
return false;
}
}
}
console.log(every([1, 3, 4, 12], n => n < 10));
// returns true
我希望将 false 视为返回,但不知何故它返回 true。
您的第一个问题是您的return true
。此行将使函数"退出",从而阻止任何剩余的代码执行。如1 < 10
,您将立即从函数返回 true。相反,您只能在检查每个元素后return true
。
您的另一个问题是for..of
循环将获取数组中的每个元素,而不是您认为的每个索引i
实际上等于您的curArr
变量:
function every(array, test) {
for(let curArr of array){
if(!test(curArr)){
return false;
}
}
return true;
}
console.log(every([1, 3, 4, 12], n => n < 10));