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