更新对象的数组无突变

问题描述:

如果我有一个目的:更新对象的数组无突变

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

如何更改“选择”字段的每一个值“假”,使用扩频操作员或Object.assign(),以避免物体突变?

+1

你说你想要的新对象的一个​​新的数组那些属性更新?如果不是,那么_“为避免物体突变”_是什么意思? –

+0

你可以使用Object.assign创建一个新的对象,其中包含旧对象的更新属性 – Raymond

+2

'我想更新原始数组而不改变它'吧?那不是矛盾呢? – Nope

可以遍历数组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);