更新对象数组而不会发生突变 [英] Updating an array of objects without mutation

查看:82
本文介绍了更新对象数组而不会发生突变的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有一个对象:

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

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

how can I change every value of 'selected' field to 'false' using spread operator or Object.assign() to avoid object mutation?

推荐答案

您可以使用 map 遍历数组,并在每个回调内部使用传播语法创建具有更新属性的新对象:

You can iterate over array with map and inside each callback use spread syntax to create new objects with updated property:

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);

这篇关于更新对象数组而不会发生突变的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆