首页 > 解决方案 > 将对象数组转换为对象对象并分配特定键

问题描述

我知道有很多关于这个的问题,但我找不到我想要的。

我有一个这样的对象数组

[{id:1}, {id:2}]

我想将 id 分配为键,将对象分配为值

{
    "1": {
         id: 1
     },
     "2": {
         id: 2
     }
}

标签: javascript

解决方案


用于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);


推荐阅读