数组 map 函数不会改变元素。

8
在JavaScript中,我有一个数组,它是:
array = [true, false]

在某些情况下,我正在尝试初始化该数组。
array.map(item => {
   item = false
})

在运行上述代码后,数组没有改变,仍为[true, false],那么.map有时不可靠吗?
另一个问题: 在运行下面的代码后,数组已经改变了。为什么在这种情况下它可以工作?
let array = [{id:1, checked: false}, {id:2, checked:true}]
array.map(item => {
    item.checked = true
})

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


.map函数不会改变原始数组,它会返回另一个数组,你应该使用它。 - Nikunj Sardhara
4个回答

10

JavaScript 数组 map() 方法

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

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

更多细节请参阅


5

数组映射函数运作良好。 map() 方法会对调用该方法的数组中的每个元素执行提供的函数,并返回一个新数组,其中包含每个函数调用的结果。 map() 不会改变它被调用的原始数组。

var array = [true, false]



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

console.log(array)
console.log(new_array)


4
如果您的映射很简单,您可以执行以下操作:
var array = [true, false];
array = array.map(_ => false);

console.log(array);
// [false, false]

2
在编程中,有时会使用下划线作为变量名,当你实际上不打算对该变量进行任何操作时。这纯粹是一种风格做法。 - Scovetta

0

.map() 方法不可变,查看其返回值:

var arr2 = array.map(item => false)
console.log(arr2)

在函数式编程中,建议值不经常改变,而JavaScript借鉴了这一点。至少对于.map()和.reduce()来说是如此。确保你很好地了解.map()。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接