Javascript 如何按键更新嵌套的immutable.js映射中的多个项?

Javascript 如何按键更新嵌套的immutable.js映射中的多个项?,javascript,redux,immutable.js,Javascript,Redux,Immutable.js,我正在使用REACT+REDUX并使用immutable.js 所以我有一个处于状态的结构 const jobs = Immutable.OrderedMap({ job1: Immutable.Map({name: 'job1Name', guid: 123, status: 'in progress'}), job2: Immutable.Map({name: 'job2Name', guid: 432, status: 'completed'}), job3: Immutab

我正在使用REACT+REDUX并使用immutable.js 所以我有一个处于状态的结构

const jobs = Immutable.OrderedMap({
  job1: Immutable.Map({name: 'job1Name', guid: 123, status: 'in progress'}),
  job2: Immutable.Map({name: 'job2Name', guid: 432,  status: 'completed'}),
  job3: Immutable.Map({name: 'job3Name', guid: 555,  status: 'in progress'})
})
我在减速机里有这个有效载荷

const payload = Map({id: 'job1', status: 'completed'}, {id: 'job3', status: 'completed'});
如何得到这个

const jobs = Immutable.OrderedMap({
  job1: Immutable.Map({name: 'job1Name', guid: 123, status: ' completed'}),
  job2: Immutable.Map({name: 'job2Name', guid: 432,  status: 'completed'}),
  job3: Immutable.Map({name: 'job3Name', guid: 555,  status: 'completed'})
})

我认为这与
merge()
mergeIn()
有关,但我不确定

如果您只想更新
状态
字段,那么类似的操作将起作用:

const jobs=Immutable.OrderedMap({
job1:Immutable.Map({name:'job1Name',guid:123,状态:'in progress'}),
job2:Immutable.Map({name:'job2Name',guid:432,状态:'completed'}),
job3:Immutable.Map({name:'job3Name',guid:555,状态:'in progress'})
})
常量有效负载=不可变。列表([
{id:'job1',状态:'completed'},
{id:'job3',状态:'completed'}
]);
常量减速机=(状态、有效负载)=>
payload.reduce((memo,{id,status})=>memo.update(id,j=>j.set(“status”,status)),state);
console.log(reducer(jobs,payload).toJS())

非常感谢,这对我很有帮助