更新没有变异的对象数组

时间:2017-03-09 12:17:08

标签: javascript ecmascript-6

如果我有一个对象:

[
   {
       "value":"d1",
       "label":"bathstore.com",
       "selected":true
   },                             
   {
       "value":"d2",
       "label":"superdrug.com",
       "selected":true
   },
   {
       "value":"d3",
       "label":"papajohns.com",
       "selected":true
   }
]

如何使用spread运算符或Object.assign()将'selected'字段的每个值更改为'false'以避免对象变异?

1 个答案:

答案 0 :(得分:5)

您可以使用map迭代数组,并在每个回调中使用扩展语法来创建具有更新属性的新对象:



let data = [
   {
       "value":"d1",
       "label":"bathstore.com",
       "selected":true
   },                             
   {
       "value":"d2",
       "label":"superdrug.com",
       "selected":true
   },
   {
       "value":"d3",
       "label":"papajohns.com",
       "selected":true
   }
];
 let newData = data.map((item) => {
    return {...item, selected: false};
 });
 console.log(newData);