Edit: на самом деле, как указывали другие пользователи, реализация _map, поскольку _forEach не предназначен для возврата копии массива.
Я пытаюсь понять, как работают такие функции, как _forEach работай. Для этого я придумал реализацию _forEach. Однако моя реализация в настоящее время просто возвращает массив неопределенных элементов, но я действительно не вижу, где что-то не так.
function _forEach(arr, cb) {
var storage = [];
for (let i = 0; i < arr.length; i++) {
storage.push(cb(arr[i], i, arr));
}
return storage;
}
var list = ["hay", "lal", "pay"];
list = _forEach(list, function(name, i, list) {
name.replace("a", "");
});
console.log(list);
Насколько я понимаю, storage.push(cb(arr[i], i, arr))
должен хранить возвращаемое значение из обратного вызова в новый массив, а затем return storage
должен иметь копию измененного массива.
Но результат console.log (list) после вызова будет просто [undefined, undefined, undefined]. Однако, если я добавлю console.log(name.replace('a', ''))
в обратный вызов, я вижу, что фильтр применяется правильно. Так почему же он не сохраняет измененный элемент в новом массиве?