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