Как написать функцию, которая мутирует и возвращает массив?
Всем здравствуйте, надо написать две функции, одна находит все элементы массива arr, равные el, и возвращает новый массив, в котором на месте найденных значений стоит replaceEl; а вторая делает то же самое, только мутирует входящий массив и возвращает его же Пробовал так:
function replaceElClear(arr, el, replaceEl) {
let result = [];
for(let i = 0; i < arr.length; i++) {
if(arr[i]===el) {
result.push(replaceEl) ;
} else {
result.push(arr[i]);
}
}
return result;} ;
replaceElClear([1,2,3,4,2], 2, 'a');
function replaceElMutate(arr, el, replaceEl) {
let result = [];
for(let i = 0; i < arr.length; i++) {
if(arr[i]===el) {
result.splice(replaceEl) ;
} else {
result.splice(arr[i]);
}
}
return result;} ;
replaceElMutate([1,2,3,4,2], 2, 'a');
Первая часть проходит тест нормально, а вторая мутацию не дает. Что не так делаю?
Ответы (1 шт):
Автор решения: Виктор
→ Ссылка
Такой вариант:
function replaceElClear(arr, item, replaceEl) {
return arr.map( p => p === item ? replaceEl : p );
}
function replaceElMutate(arr, item, replaceEl) {
for(let i = 0; i < arr.length; i++) {
arr[i] = arr[i] === item ? replaceEl : arr[i];
}
return arr;
}
let arr = [1,2,3,4,2];
let arr2 = replaceElClear(arr, 2, 'a');
console.log(arr, arr2);
arr = [1,2,3,4,2];
arr2 = replaceElMutate(arr, 2, 'a');
console.log(arr, arr2);
Вывод:
[ 1, 2, 3, 4, 2 ] [ 1, 'a', 3, 4, 'a' ]
[ 1, 'a', 3, 4, 'a' ] [ 1, 'a', 3, 4, 'a' ]