我在 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。
答案 0 :(得分:2)
您的第一个问题是您的return true
。该行将使您的函数“退出”,从而停止执行任何剩余的代码。作为1 < 10
,您将立即从函数中返回true。相反,只有检查完每个元素后,您才能return true
。
您的另一个问题是for..of
循环将获取数组中的每个元素,而不是像您认为的那样每个 index 都这样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));