繁体   English   中英

将对象数组转换为对象对象并分配特定键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM