
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 ```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})) |