我希望使用immutable.js
更新数组中的对象我的对象如下:
{
location: '',
cars: [
{id: 1, color: blue},
{ id: 2, color: red}
]
};
在我的代码中,我得到例如car id:2并更改颜色{id:2,color:black}
我现在希望更新索引为1的汽车。
我试过了:
const car = { id: 2, color: black}
updateIn([ 'cars' ], list => list.push(car));
这只会在最后添加一辆新车。
我可以使用Immutable JS中的哪个函数来更新car id#2。
使用immutable.js
执行此操作的正确方法是什么答案 0 :(得分:1)
const car = { id: 2, color: black};
const indexToBeUpdated = 1;
updateIn(["cars", indexToBeUpdated], () => car);
无论索引是什么,都需要将它传递给updateIn方法的第一个参数,即一个数组。
答案 1 :(得分:0)
按条件更新不可变列表中的元素:
const data = fromJS({
location: '',
cars: [
{id: 1, color: blue},
{ id: 2, color: red}
]
});
const car = { id: 2, color: black}
const index = data.get(['cars']).findIndex(listItem => {
// condition here
return listItem.get('id') === car.id;
});
const new_data = data.setIn(['cars', index], car);