let data =[{},{}]
console.log(data);
data.forEach(function (item) {
item.status = 123;
});
结果打印 data 的时候 里面多了个 key status 把源数据污染掉了。我不想它污染源数据,有什么办法处理呢! 还有 V2 回贴的时候 markdown 为啥没用呢!该如何回呢!
let data =[{},{}]
console.log(data);
data.forEach(function (item) {
item.status = 123;
});
结果打印 data 的时候 里面多了个 key status 把源数据污染掉了。我不想它污染源数据,有什么办法处理呢! 还有 V2 回贴的时候 markdown 为啥没用呢!该如何回呢!
|
huihuimoeSep 28, 2019 via iPhone
1
lodash deep clone
|
|
SankoSep 28, 2019 via Android
2
序列化再反序列化
|
|
deepdarkSep 28, 2019 via Android
3
深克隆
|
|
4
```js
const newData = data.map(i => { return { ...i, status: 123 } }); // 仅支持浅层,多层需要 deep clone ``` |
|
chuxiaonanSep 28, 2019
5
data.slice().forEach/for...of
data.map/flatMap 很多方法感觉 |
|
chuxiaonanSep 28, 2019
6
@chuxiaonan 哎呀不对 slice()不行。。
|
|
zhujinliangSep 29, 2019 via iPhone
7
用 console.log(JSON.stringify(data))
|
|
neptunoSep 29, 2019 via iPhone
8
转成 json,再转回来,,,
|
|
jataiSep 29, 2019 via Android
9
...展开运算符,真香
|
|
w292614191Sep 29, 2019
10
JSON.parse
JSON.stringify 只能用于一些简单的对象克隆。 |
|
duzhihaoSep 29, 2019
11
只能深拷贝吧,
|
|
cc77Sep 29, 2019
12
既然不想修改(污染),为什么要操作引用数据
|
|
13
@hackyuan 谢谢
@rick2c 肯定要对原数据操作组装新数据。 @chuxiaonan flatMap 我刚查了下 是 es10 的特性啊。我还停留在 es6 之前!不知道现在 bable 是否能转 es10 |
|
chuxiaonanSep 29, 2019
14
@coderabbit babel 能 transpile 的相当多 甚至很多没进入规范的都能转 比如装饰器,Observable 之类的
|
|
SoloCompanySep 29, 2019
15
data.map(x -> ({...x, status: 123}))
|