Язык приглашения здесь очень важен:
Создайте функцию forEach, которая принимает массив и обратный вызов, и запускает обратный вызов для каждого элемента массива.forEach ничего не возвращает .
Он просит вас вызвать функцию для каждого элемента массива, но не просит вернуть массив.В отличие от map
, forEach
только вызывает предоставленный обратный вызов для каждого элемента, но не возвращает массив.
Из MDN : «Метод forEach () выполняет предоставленную функциюодин раз для каждого элемента массива. "Например, рассмотрим этот код, используя собственный forEach:
var foo = [1, 2, 3];
function logger(item) {
console.log(item);
}
foo.forEach(logger);
>1
>2
>3
Кроме того, если мы попытаемся зарегистрировать то, что возвращается из forEach
, мы получим следующее:
console.log(foo.forEach(logger));
>1
>2
>3
>undefined // The returned value
Вашреализация близка, но, похоже, вы пытались включить функциональность map
(возвращая новый массив) в вашу функцию forEach
.Вам нужно изменить его так, чтобы он вызывал функцию только для каждого элемента, но не создавал и не возвращал новый массив.
Чтобы создать функцию mapWith
, вам может понадобиться промежуточная функция, котораяобрабатывает создание нового массива, но он будет отделен от callback
и forEach
.