数组映射函数不改变元素
Array map function doesn't change elements
在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() 方法创建一个新数组,其中包含对该数组中每个元素调用提供的函数的结果。
map() 不会改变调用它的数组。
var array = [true, false]
var new_array = array.map(function(item) {
return false;
});
console.log(array)
console.log(new_array)
.map()
方法不可变,检查它的 return 值:
var arr2 = array.map(item => false)
console.log(arr2)
在函数式编程中,建议值不要经常变化,JavaScript借用了。至少 .map()
和 .reduce()
是这样。确保你很了解 .map()
。
如果你的映射很简单,你可以这样做:
var array = [true, false];
array = array.map(_ => false);
console.log(array);
// [false, false]
JavaScript 数组 map() 方法
*) 使用为每个数组元素调用一个函数的结果创建一个新数组,并按顺序为数组中的每个元素调用一次提供的函数。
注意:map()方法对没有值的数组元素不执行函数,不改变原数组。
在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() 方法创建一个新数组,其中包含对该数组中每个元素调用提供的函数的结果。 map() 不会改变调用它的数组。
var array = [true, false]
var new_array = array.map(function(item) {
return false;
});
console.log(array)
console.log(new_array)
.map()
方法不可变,检查它的 return 值:
var arr2 = array.map(item => false)
console.log(arr2)
在函数式编程中,建议值不要经常变化,JavaScript借用了。至少 .map()
和 .reduce()
是这样。确保你很了解 .map()
。
如果你的映射很简单,你可以这样做:
var array = [true, false];
array = array.map(_ => false);
console.log(array);
// [false, false]
JavaScript 数组 map() 方法
*) 使用为每个数组元素调用一个函数的结果创建一个新数组,并按顺序为数组中的每个元素调用一次提供的函数。
注意:map()方法对没有值的数组元素不执行函数,不改变原数组。