这里我有一个不可变的列表。我需要将除了id为2的对象之外的所有对象的isReq对象更新为false。
[
{
'id': 1,
'name': 'Ram',
'Details': {
'isReq': true
}
},
{
'id': 2,
'name': 'dev',
'Details': {
'isReq': true
}
},
{
'id': 3,
'name': 'joe',
'Details': {
'isReq': true
}
}
答案 0 :(得分:1)
使用map
并添加if-else分支:
list.map(item => {
if (item.id === 2) {
return item
} else {
return { ...item, Details : {isReq': false} }
}
}
这里我们使用对象扩展运算符来更新项目,但您也可以使用Object.assign
或完全不同的东西。
答案 1 :(得分:0)
我在这里找到了解决问题的方法,但不知道它是否是最佳方法。
let selectedId = 2;
let arr = fromJS(
[{ 'id': 1, 'name': 'Ram', 'Details': { 'isReq': true } },
{ 'id': 2, 'name': 'dev', 'Details': { 'isReq': true } },
{ 'id': 3, 'name': 'joe', 'Details': { 'isReq': true } }]);
let newarr = arr.map(function (val: any, index: any) {
if (val.get('id') === selectedId) {
return val.setIn(['Details', 'isReq'], true);
} else {
return val.setIn(['Details', 'isReq'], false);
}
});