javascript - 如何从 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”数组中正在发生的事情。
解决方案
所以你基本上想要创建每个切片元素的副本。你可以这样做:
this.sampleData = this.data.slice(0, 1).map(obj => ({ ...obj }))
或使用Object.assign
:
this.sampleData = this.data.slice(0, 1).map(obj => Object.assign({}, obj))
请注意,这只是一个浅拷贝,因此如果您的对象具有嵌套结构,则必须执行深层拷贝。
推荐阅读
- c++ - boost::asio::connect 在错误的子网上报告成功
- verilog - 错误:合成不支持在多个单边下分配
- server - 如何将扭曲的 Python 代码托管到 Internet?
- r - ggplot2的世界地图
- android - 在 Kotlin 中按下按钮时,Android 应用程序崩溃
- c - 打印行号随着 C 中的每个输入而递增
- python-3.x - 为什么 Python 不加载 ca 证书?
- c++ - 在与 C++ 实现相关的类图中,描述员工职业的适当方式是什么?
- ajax - 带有 rowGroup 的数据表 ajax.reload()
- python - 一次热编码期间的 RunTimeError