Map方法更改旧数组
Map method change old array
为什么映射要更改旧数组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)
在您的情况下,最简单的方法是
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}));
似乎没有直接的方法可以在没有引用的情况下复制数组。但这是可行的:
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)
相关文章:
- javascript:更改应用到的数组的数组方法列表
- 使用Knockout.js的数组方法将地图标记添加到Google地图
- 模拟 javascript 的数组方法.面向对象的Javascript,作者:Stoyan Stefanov
- ECMA5 数组方法 - 查找数组中某个类型的第一个对象
- 在 Object.prototype 上为 NodeList 对象实现数组方法是否是一个很好的实践?
- 有没有一种方法可以实现chain.push和.shift数组方法
- 'document.getElementsByClassName' 的结果没有定义像 'map' 这样的数组方法,即使它
- JavaScript重写数组方法
- 有谁能告诉我在Shift的引擎盖下发生了什么吗?JavaScript中的Unshift()数组方法
- 如何删除数据库使用数组方法DELETE
- .push数组方法不工作角过滤器
- 包含数组方法的JavaScript函数没有返回期望的结果
- 对象/数组方法:修改原始的还是创建新的?指导方针
- 用自定义方法替换本机对象(数组)方法:是否安全?兼容的
- Javascript数组方法查找超过第一个值的indexOf
- 数组方法"some"的使用:收到意外的结果
- Javascript:使对象继承数组方法
- 使用数组方法遍历列表项
- 使用数组方法时返回方括号的函数
- 数组方法和连接函数组合输出在 javascript 中无法理解