[英]I need to convert my array of objects into one object with specific keys
[英]Convert array of objects to object of objects and assign specific keys
我知道有很多关于这个的问题,但我找不到我想要的。
我有一个像这样的对象数组
[{id:1}, {id:2}]
我想将 id 指定为键,将对象指定为值
{
"1": {
id: 1
},
"2": {
id: 2
}
}
使用Array.reduce()
根据key
参数创建一个带有键的对象:
const keyBy = (arr, key) => arr.reduce((r, o) => { r[o[key]] = o; return r; }, {}); const arr = [{id:1}, {id:2}]; const result = keyBy(arr, 'id'); console.log(result);
如果您希望它更实用,请使用object spread替换累加器:
const keyBy = (arr, key) => arr.reduce((r, o) => ({ ...r, [o[key]]: o }), {}); const arr = [{id:1}, {id:2}]; const result = keyBy(arr, 'id'); console.log(result);
使用.reduce
:
const input = [{id:1}, {id:2}]; const output = input.reduce((accum, { id }) => { accum[id] = { id }; return accum; }, {}); console.log(output);
一种方法可能是(es6):
const newObject = {};
myArrayWithObjects.map(singleObject => {
newObject[singleObject.id.toString()] = singleObject;
return true;
});
Lodash还可以帮助您解决这个问题:
const newObject = _.keyBy(myArrayWithObjects, function(singleObject) {
return singleObject.id.toString();
});
而https://github.com/paularmstrong/normalizr绝对是更糟糕的一瞥。 但我想,对于这项任务来说,这太过分了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.