数组映射函数不会改变元素

Ben*_* Li 6 javascript arrays array.prototype.map

在 JavaScript 中,我有一个数组,它是

array = [true, false]
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我试图初始化这个数组

array.map(item => {
   item = false
})
Run Code Online (Sandbox Code Playgroud)

运行上面的代码后,数组没有改变,仍然是[true, false],所以.map有时不可靠?


另一个问题:运行下面的代码后,数组发生了变化。为什么在这种情况下有效?

let array = [{id:1, checked: false}, {id:2, checked:true}]
array.map(item => {
    item.checked = true
})
Run Code Online (Sandbox Code Playgroud)

数组变成 [{id:1, checked: true}, {id:2, checked:true}]

小智 8

JavaScript 数组 map() 方法

*) 使用为每个数组元素调用函数的结果创建一个新数组,并按顺序为数组中的每个元素调用一次提供的函数。

注意:map() 方法对没有值的数组元素不执行函数,也不改变原数组。

更多细节


Gau*_*shi 5

数组映射功能工作正常。的地图()方法创建调用此阵列中的每个元件上的提供功能的结果的新的数组。 map()不会改变调用它的数组。

var array = [true, false]



var new_array = array.map(function(item) {
  return false;
});

console.log(array)
console.log(new_array)
Run Code Online (Sandbox Code Playgroud)