JavaScript破坏性地图功能

JavaScript Destructive Map Function

我正试图让这个地图函数成为一个更具破坏性的版本。这意味着 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 returns:

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

数组应该是 [5,2,1],目前是 [6,3,2]

您的 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 或类似名称。

你可以按照这个代码...我希望你的问题解决了

function map(array, callback) {
    var result=[]
    for (var i = 0; i < array.length; i++) {
       result.push(callback(array[i]))
    }
    console.log(result)
}
map([5, 2, 1], (value) => {
   return value
})