【发布时间】:2018-06-25 14:50:36
【问题描述】:
我不明白复制数组的工作原理以及从数组复制对象的最佳方法是什么。
当我通过扩展运算符或方法 slice() 创建一个作为现有数组副本的新数组时,任何操作仍会更改两个数组中的值。
示例:
let array = [{count: 10}, {count: 20}, {count: 30}, {count: 40}];
let newArray = array.slice();
newArray[1].count = 0;
// console.log(array[1].count === newArray[1].count);
// > true
这意味着我应该使用 JSON.parse(JSON.stringify(array))?
示例:
let array = [{count: 10}, {count: 20}, {count: 30}, {count: 40}];
let arrayByJSON = JSON.parse(JSON.stringify(array));
arrayByJSON[1].count = 5;
// console.log(array[1].count === arrayByJSON[1].count)
// false
【问题讨论】:
-
你需要一个
clone方法。它的复制引用,而不是值。 -
看来您已经研究过如何做到这一点?
标签: javascript arrays