Что нужно сделать что-бы входящий массив не менялся?
Что значит входящий массив не должен меняться, я как это правильно записать?
const increaseEvenEl = (arr, delta) => {
if(!Array.isArray(arr)){
return null
}
for(let i = 0; i < arr.length; i++){
if(arr[i] % 2 === 0){
arr[i] = arr[i] + delta;
}
}
return arr;
};
// examples
increaseEvenEl([2, 5, 6, 8, 11, 9, 4], 20); // ===> [22, 5, 26, 28, 11, 9, 24]
increaseEvenEl([7, 11, 1], 10); // ===> [7, 11, 1]
increaseEvenEl([], 120); // ===> []
Ответы (1 шт):
Автор решения: EzioMercer
→ Ссылка
Простой и однострочный вариант без мутации оригинального массива:
const increaseEvenEl = (arr, delta) => Array.isArray(arr) ? arr.map(x => x % 2 === 0 ? x + delta : x) : null;
// examples
console.log(increaseEvenEl([2, 5, 6, 8, 11, 9, 4], 20)); // ===> [22, 5, 26, 28, 11, 9, 24]
console.log(increaseEvenEl([7, 11, 1], 10)); // ===> [7, 11, 1]
console.log(increaseEvenEl([], 120)); // ===> []
console.log(increaseEvenEl(5, 120)); // ===> null
console.log(increaseEvenEl({map:(x) => console.log(x(2))}, 120)); // ===> null
Вариант с обычным циклом без мутации:
const increaseEvenEl = (arr, delta) => {
if (!Array.isArray(arr)) {
return null
}
const result = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] % 2 === 0) {
result.push(arr[i] + delta);
} else {
result.push(arr[i]);
}
}
return result;
};
// examples
console.log(increaseEvenEl([2, 5, 6, 8, 11, 9, 4], 20)); // ===> [22, 5, 26, 28, 11, 9, 24]
console.log(increaseEvenEl([7, 11, 1], 10)); // ===> [7, 11, 1]
console.log(increaseEvenEl([], 120)); // ===> []