Получение неопределенного вместо правильного результата - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь использовать метод forEach для моего массива, но получаю неопределенное значение вместо правильного результата. Может ли кто-нибудь помочь мне и сказать, что не так с моим кодом?

[0,1,2,3].forEach((x,i) => (x*i)%3);

Ответы [ 4 ]

3 голосов
/ 27 марта 2020

Возвращаемое значение forEach() равно undefined, используйте Array.prototype.map () вместо:

var r = [0,1,2,3].map((x,i) => (x*i)%3);
console.log(r);
2 голосов
/ 27 марта 2020

Вы используете forEach, который ничего не возвращает, поэтому результат его вызова равен undefined. (forEach также полностью игнорирует возвращаемое значение обратного вызова, который он вызывает.)

Если вы хотите получить возвращаемое значение, вы, вероятно, захотите map (или, возможно, reduce), а не forEach. Например:

console.log([0,1,2,3].map((x,i) => (x*i)%3));
1 голос
/ 27 марта 2020

Это из https://developer.mozilla.org/

forEach () выполняет функцию обратного вызова один раз для каждого элемента массива; в отличие от map () или redu (), он всегда возвращает значение undefined и не является цепным. Типичный вариант использования - выполнение побочных эффектов в конце цепочки.

Если вы пытаетесь преобразовать массив, используйте map () вместо

1 голос
/ 27 марта 2020

Вы ничего не возвращаете внутри forEach, напишите для этого файл console.log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...