首页 > 解决方案 > 如何从 Slice 进行完整复制?

问题描述

我是这样的数组

@observable data = [{a: 1}, {b: 1}, {c:1}];
 @observable sampleData = [];

我想做一片

 this.sampleData = this.data .slice(0, 1);
 this.sampleData[0].a = 2; 

我希望“2”影响“sampleData”中的记录,而不是“data”数组中正在发生的事情。

标签: javascript

解决方案


所以你基本上想要创建每个切片元素的副本。你可以这样做:

this.sampleData = this.data.slice(0, 1).map(obj => ({ ...obj }))

或使用Object.assign

this.sampleData = this.data.slice(0, 1).map(obj => Object.assign({}, obj))

请注意,这只是一个拷贝,因此如果您的对象具有嵌套结构,则必须执行深层拷贝。


推荐阅读