javascript - JavaScript 通过键将对象数组转换为对象
问题描述
我有一组像这样的对象:
[
{
name: 'John',
email: 'user@mail.com',
city: 'London',
type: 'CLIENT'
},
{
name: 'Steve',
email: 'stave@mail.com',
city: 'Rome',
type: 'USER'
},
{
name: 'Mark',
email: 'mark@mail.com',
city: 'Paris',
type: 'ADMIN'
}
]
我需要把它变成这样的东西:
{
CLIENT: {
name: 'John',
email: 'user@mail.com',
city: 'London'
},
USER: {
name: 'Steve',
email: 'stave@mail.com',
city: 'Rome',
},
ADMIN: {
name: 'Mark',
email: 'mark@mail.com',
city: 'Paris',
type: 'ADMIN'
}
}
最好的方法是什么?
谢谢
解决方案
使用Array#reduce
简单的对象解构来获得您想要的结果:
const data = [{
name: 'John',
email: 'user@mail.com',
city: 'London',
type: 'CLIENT'
},
{
name: 'Steve',
email: 'stave@mail.com',
city: 'Rome',
type: 'USER'
},
{
name: 'Mark',
email: 'mark@mail.com',
city: 'Paris',
type: 'ADMIN'
}
];
const result = data.reduce((acc, { type, ...obj }) => {
acc[type] = obj;
return acc;
}, {})
console.log(result);
推荐阅读
- mongodb - 如何使用 pymongo 监视数据库中所有集合的更改
- javascript - 弹性搜索查询不适用于非保留字符
- java - 从 preorder 和 inorder 创建 BinaryTree 时出现 java.lang.NullPointerException
- ios - 如何从本地 storekit 配置文件验证服务器上的收据数据?
- python - Django 删除函数覆盖 pgtrigger
- python - 从用python爬行的网站编写csv
- python - 无法获取 Instagram 页面
- angularjs - ng-repeat 之外的 AngularJS 访问循环长度
- r - 向不稳定的文本添加图标
- python - Python中具有n个值的列表