javascript - 如何从另一个对象数组创建具有唯一键/值对的对象数组?
问题描述
我试图从这个对象数组中实现一个具有唯一键/值对的较小对象数组。这是我想从中获取组及其值的数组。这是对象的主要数组:
let samples = {
{
id: 2,
group: 'picturesWithDescription',
elements: [
{
id: 1
},
{
id: 2
}
]
},
{
id: 3,
group: 'footers',
elements: [
{
id: 1
},
{
id: 2
}
]
},
{
id: 4,
group: 'movies',
elements: [
{
id: 1
},
{
id: 2
}
]
},
{
id: 4,
group: 'movies',
elements: [
{
id: 1
},
{
id: 2
}
]
}
}
这是我想要实现的目标:
let result = [
{group: 'picturesWithDescription'},
{group: 'footers'},
{group: 'movies'}
]
解决方案
假设样本是一个数组,如问题所述。
尝试关注
let samples = [{id:2,group:'picturesWithDescription',elements:[{id:1},{id:2}]},{id:3,group:'footers',elements:[{id:1},{id:2}]},{id:4,group:'movies',elements:[{id:1},{id:2}]},{id:4,group:'movies',elements:[{id:1},{id:2}]}];
/* 1. Create an array with only group names
** 2. Convert it into Set to remove duplicates.
** 3. Convert back to array.
** 4. Create an array with object with group property. */
let result = [...new Set(samples.map(({group}) => group))].map((group) => {return {group}});
console.log(result);
或者
let samples = [{id:2,group:'picturesWithDescription',elements:[{id:1},{id:2}]},{id:3,group:'footers',elements:[{id:1},{id:2}]},{id:4,group:'movies',elements:[{id:1},{id:2}]},{id:4,group:'movies',elements:[{id:1},{id:2}]}];
/* 1. Reduce the array into an object with group names as key (removes duplicate)
** 2. Iterate over the keys (group names) and create an object with group property*/
let result = Object.keys(samples.reduce((a,{group}) => {a[group] = group; return a}, {})).map((group) => {return {group}});
console.log(result);
推荐阅读
- android - 为什么 android studio 不为所有安全参数生成代码?
- python - 如何使用 Python 杀死以特定用户“xyz”的名称“a123”开头的进程
- tcp - 如何使用 ZeroMQ 开发简单的 DEALER/ROUTER 消息流?
- azure - 是否有任何连接器可以在逻辑应用程序中运行代码?
- ubuntu-16.04 - python中的Hyperledger Sawtooth供应链交易示例
- php - 当我单击我的编辑按钮时,出现“尝试获取非对象的属性 'course_code'”的错误。可能是什么问题呢?
- sql-server - T-SQL中使用的@符号是什么
- python - 将 X、Y、Z 值转换为矩阵图
- python - 我在打印特定符号时出错(python)
- php - 如何安装 CLI 解释器以在 PhpStorm 中运行 .php 文件?