我有一个像这样的对象数组
[
{id: example1, count: 2}, {id: example2, count:2}
]
我想变成一个像
{
example1: { id: example1, count: 2},
example2: { id: example2, count: 2},
}
...等等。
这应该在使用es6的redux reducer中使用,因此,如果其中有可用或lodash可用。
为了清楚起见,这就是我最终在@ james-emanon的建议中所做的事情。当然,这只是使用reduce的问题。
case ActionTypes.FETCH_SNAPSHOTS_SUCCESS:
let snapshots = action.payload.reduce((p, c) =>
Object.assign({},
p, {
[c.id]: c
}
), {}
)
return Object.assign({},
state, {
isFetching: false,
lastUpdated: action.meta.receivedAt
},
snapshots
)
这样的事情怎么样?(使用es6约定)
// assuming you action will pass an object like this
var a = [
{id: 'example1', count: 2}, {id: 'example2', count:2}
]
// snippet from reducer
case TYPE.SOME_CASE_CONSTANT:
let newObj = action.yourArrayofObj
.reduce((p,c) => {
return {...p, [c.id]: c}
}, {})
return {
...state,
newObj
}
或者
action.yourArrayofObj
.reduce((p,c) => {
p[c.id] = c
return p
}, {})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句