Функция высокого порядка "каждый" метод ПРОБЛЕМА - PullRequest
0 голосов
/ 25 марта 2019

У меня есть проблема, которую нужно решить в 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 Ответ

2 голосов
/ 25 марта 2019

Ваша первая проблема с вашим return true.Эта строка заставит вашу функцию «выйти», тем самым остановив выполнение любого оставшегося кода.Как 1 < 10, вы немедленно возвращаете true из своей функции.Вместо этого вы можете return true только после проверки каждого элемента.

Другая ваша проблема заключается в том, что цикл for..of будет получать каждый элемент в вашем массиве, а не каждый index , как выдумаю, что вы делаете так, что i infact фактически равно вашей 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...