javascript - 将对象数组转换为对象对象并分配特定键
问题描述
我知道有很多关于这个的问题,但我找不到我想要的。
我有一个这样的对象数组
[{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);
推荐阅读
- substrate - polkadot-js balances.transfer 抛出错误
- php - Woocommerce:在我的网站下订单后强制清除购物车?
- javascript - React:更新组件中的数组并将其显示为列表
- python - Draw x number of sprites on repeat
- r - 向ggplot折线图添加空格
- flutter - 当我尝试在 for Each (DART AND FLUTTER) 中使用 .add 时出现问题
- php - 将复杂对象保存在 foreach 之外
- python - 将python中索引的日期格式从yyyy-dd-mm更改为yyyy-mm-dd
- blockchain - 如何实现授权合约运营商来执行 NFT 代币的购买操作?
- kubernetes - 无法在 Kubernetes 中附加或挂载卷