JavaScript破坏性地图功能

时间:2019-02-20 01:50:36

标签: javascript arrays function methods 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返回:

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

该数组应为[5,2,1],当前为[6,3,2]

2 个答案:

答案 0 :(得分:5)

您的o创建一个新数组。如果要修改旧数组,则应为其分配(分配给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或类似的名称。

答案 1 :(得分:0)

您可以遵循此代码...希望您的问题得到解决

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
})