高阶函数“每”方法问题

时间:2019-03-25 11:58:09

标签: javascript eloquent

我在 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。

1 个答案:

答案 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));