为什么地图会变成旧数组numbers
?我不想更改旧数组,我想编辑它(key * 2
)并将其放在新数组roots
中。有人可以解释问题是什么吗?
var numbers = [{key:1,prop:"ok"}, {key:2,prop:"ok"}, {key:3,prop:"ok"}];
var roots = numbers.map(index => {
index.key = index.key * 2
return index
})
console.log('numbers', numbers)
console.log('roots', roots)
答案 0 :(得分:2)
在您的情况下,最简单的方法是
var numbers = [{key:1,prop:"ok"}, {key:2,prop:"ok"}, {key:3,prop:"ok"}];
var roots = numbers.map(elt => ({
key: elt.key * 2,
prop: elt.prop
}));
换句话说,从map
返回新对象。
或者如果您愿意,可以对参数进行解构:
var roots = numbers.map(({key, prop}) => ({key: key * 2, prop}));
答案 1 :(得分:1)
似乎没有直接的方法来复制没有引用的数组。 但这适用于:
var numbers = [{key:1,prop:"ok"}, {key:2,prop:"ok"}, {key:3,prop:"ok"}];
var roots = JSON.parse(JSON.stringify(numbers));
roots.map(index => {
index.key = index.key * 2
return index
})
console.log('numbers', numbers)
console.log('roots', roots)