Написал функцию, которая заменяет элементы строки, через forEach и явно объявленный массив - все ок. Почему через map, возвращает 2 массива?
let str = 'abc def def lom abc abc def';
function replaceAll(find, replace, str) {
let array = str.split(' ');
array.map(element => {
element === find ? array.push(replace) : array.push(element);
});
return array
};
console.log(replaceAll('abc', 'x', str));
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Строка:
let array = str.split(' ');
В array будет лежать массив элементов.
Далее:
array.push(...
тут заносим элементы в переменную array, которая УЖЕ существует, которая объявлена строкой выше и в которой УЖЕ существуют данные.
Если вам надо поменять что-то, то вам надо в элементе (element) менять, а не делать push. И возвращать результат работы map
И ещё одна ошибка: Если в стрелочной функции имеется тело или оборачивается в фигурные скобки, то надо принудительно писать return иначе функция внутри map ничего не вернёт...точнее вернёт сплошные undefined