Разрушительная функция карты JavaScript - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь сделать эту карту более разрушительной версией.То есть функция map изменяет исходный массив вместо нового.

function map (array, callback) {
  var result = []
  for (var i = 0; i < array.length; i++) {
    result.push(callback(array[i]))
  }
  console.log("Array",array, "Result",result)
  return result
}

console.log возвращает:

   Array [ 5, 2, 1 ] Result [ 6, 3, 2 ]

Массив должен быть [5,2,1] ив настоящее время [6,3,2]

1 Ответ

0 голосов
/ 20 февраля 2019

Ваш var result = [] создает новый массив.Если вы хотите изменить старый массив, вам следует присвоить ему (назначить свойствам параметра array):

function map (array, callback) {
  array.forEach((item, i) => {
    array[i] = callback(item);
  });
  return array;
}

const arr = [1, 2];
map(arr, e => e + 1);
console.log(arr);

Обратите внимание, что вызов этой функции map может вводить в заблуждение, поскольку Array.prototype.map делает нечто подобное, но создает совершенно отдельный массив ,как делает ваш оригинальный код.Возможно, вы захотите вызвать эту функцию как-то иначе, чем map, возможно changeEvery или что-то в этом роде.

...