const example = ["1", "se", "thi", "four"].reduce((acc, el) => {
acc = el + '!!!' + el.length + '!!!';
return acc
},
[]);
console.log(example);
На выходе у нас four!!!4!!!
Хотя я ожидал увидеть все измененные элементы в списке.
Насколько я понимаю
,
[]
именно вот этот участок кода отвечает за то, куда будут накапливаться результаты.
Я поставил список и ожидал, что измененные элементы окажутся там, почему их там нет?
Потому, что reduce так не работает. Согласно документации:
array.reduce(callback[, initialValue])
callback(accumulator, element) - функция обратного вызова, которая принимает предыдущий результат accumulator и по очереди каждый элемент массива element.
initialValue - начальное значение для accumulator, если не задано, то оно равно первому элементу массива и в качестве element сразу передается второй элемент массива.
[1,2,3].reduce((acc, el) => {
console.log(acc, el)
acc = el + '!!!';
return acc
}, "это первое значение для accumulator");
Если вы хотели вернуть все в массиве, то нужно было их туда добавлять самостоятельно.
const example = ["1", "se", "thi", "four"].reduce((acc, el) => {
acc.push(el + '!!!' + el.length + '!!!');
return acc
},
[]);
console.log(example);
Или использовать Map для таких случаев.
const example = ["1", "se", "thi", "four"].map((el) => {
acc = el + '!!!' + el.length + '!!!';
return acc
});
console.log(example);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей