高阶函数"every"方法问题



我在 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));

最新更新