Что нужно сделать что-бы входящий массив не менялся?

Что значит входящий массив не должен меняться, я как это правильно записать?

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)); // ===> []

→ Ссылка