更新对象的数组无突变
问题描述:
如果我有一个目的:更新对象的数组无突变
[
{
"value":"d1",
"label":"bathstore.com",
"selected":true
},
{
"value":"d2",
"label":"superdrug.com",
"selected":true
},
{
"value":"d3",
"label":"papajohns.com",
"selected":true
}
]
如何更改“选择”字段的每一个值“假”,使用扩频操作员或Object.assign(),以避免物体突变?
答
可以遍历数组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);
你说你想要的新对象的一个新的数组那些属性更新?如果不是,那么_“为避免物体突变”_是什么意思? –
你可以使用Object.assign创建一个新的对象,其中包含旧对象的更新属性 – Raymond
'我想更新原始数组而不改变它'吧?那不是矛盾呢? – Nope