我想将一个对象数组映射为按特定对象键分组的Immutable Map输出。
array looks like
[
{id:1, time:19072016},
{id:2, time:19072016},
{id:3, time:19072015},
]
output im seeking is
[
byId: {
1:{id:1, time:19072016},
2:{id:2, time:19072016},
3:{id:3, time:19072015},
},
byTime: {
19072016:[1,2],
19072015:[3],
}
]
如何使用immutablejs或seamless-immutable实现最有效的方式?
目前我正在使用reduce函数:
array.reduce( (final,row) =>final.setIn(['byId',row.id],row) ,
Immutable.Map({byId:{},byTime:{}});
我将通过Ids输出,这部分没问题。但是关于byTime
的问题是,我需要进行合并而不是覆盖。
我尝试使用了seamless-immutable,代码如下:
Seamless(arr).toObject(i=>[i.id,i]) //this will return byId as i want it
Seamless(arr).toObject(i=>[i.time,[i.id]]) //this will not merge [1,2] :(