Изменить функцию с побочными эффектами на pure function

Функция changeEven(numbers, value) принимает массив чисел numbers и обновляет каждый элемент, значение которого это чётное число, добавляя к нему значение параметра value.

Выполнить рефакторинг функции так, чтобы она стала чистой - не изменяла массив чисел numbers, а создавала, наполняла и возвращала новый массив с обновлёнными значениями.

function changeEven(numbers, value) {
  // Change code below this line
  for (let i = 0; i < numbers.length; i += 1) {
    if (numbers[i] % 2 === 0) {
      numbers[i] = numbers[i] + value;
    }
  }
}

мой вариант

function changeEven(numbers, value) {

  const newArray = [];
  numbers.forEach(element => {
    if (numbers % 2 === 0) {
      newArray.push(element + value)
    }

  });
  return newArray
}

console.log(changeEven([1, 2, 3, 4, 5], 10))
console.log(changeEven([17, 24, 68, 31, 42], 100))

что мне нужно добавит(изменить)?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Надо заменить это:

if (numbers % 2 === 0) {

на это:

if (element % 2 === 0) {

а также дописать:

else newArray.push(element)

чтобы вставлять неизменённые нечётные элементы в массив

→ Ссылка