ImmutableJS:在一个数组数组里面创build一个对象

我有一个有点复杂的状态如下:

array: array: object, object, etc... array: etc... 

简单地说,一个包含许多数组的对象的数组。 我试图根据它的Id在这个混乱中find这些对象中的一个,并更新它(即设置一个完成的值为true),但迄今还没有能够。 使用Mudash,我设法find这个对象,但我不知道如何再次传递它返回它,我的代码如下:

  return state.update('data', (arr) => { _.forEach(arr, function(item) { _.forEach(item, function(elt) { if(elt.Id == action.Id) { console.log('Item Found'); elt.set('completed', true); } }); }); return arr; }); 

有一些简单的方法来完成这个? 谢谢。

这里的关键是你不能改变值。 相反,你需要考虑如何改变深度嵌套数据结构中的每个父值,从而解决问题。

一个简单的使用_.map方法将做的伎俩…

 const _ = require('mudash') return _.update(state, 'data', (arr) => { return _.map(arr, function(item) { return _.map(item, function(elt) { if(_.get(elt, 'Id') == action.Id) { console.log('Item Found'); return _.set(elt, 'completed', true); } return elt; }); }); }); 

如果你问如何改变一个不可改变的对象的一部分,那么将不会有任何答案满足你。 看到这个答案更多的细节:

  • Immutable.js关系