更新对象数组而不会发生突变

Kan*_*ali -3 javascript ecmascript-6

如果我有一个对象:

[
   {
       "value":"d1",
       "label":"bathstore.com",
       "selected":true
   },                             
   {
       "value":"d2",
       "label":"superdrug.com",
       "selected":true
   },
   {
       "value":"d3",
       "label":"papajohns.com",
       "selected":true
   }
]
Run Code Online (Sandbox Code Playgroud)

如何使用扩展运算符或Object.assign()将“选定”字段的每个值更改为“假”,以避免对象突变?

Bar*_*icz 6

您可以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);
Run Code Online (Sandbox Code Playgroud)