javascript - 组合对象数组中父键相同的子对象
问题描述
我有一个具有重复父键的对象数组:
[
{parent1: {'child_id_1': 'value_child_1'}}
{parent1: {'child_id_1_1': 'value_child_1_1'}}
{parent2: {'child_id_2_1': 'value_child_2_1'}}
{parent2: {'child_id_2_2': 'value_child_2_2'}}
{parent2: {'child_id_2_3': 'value_child_2_3'}}
...
]
我正在寻找这个结果:
[
{parent1: {'child_id_1': 'value_child_1'}, {'child_id_1_1': 'value_child_1_1'}}
{parent2: {'child_id_2_1': 'value_child_2_1'}, {'child_id_2_2': 'value_child_2_2'}, {'child_id_2_3': 'value_child_2_3'}}
]
我已经尝试过与下面类似的方法,但它只返回一个密钥对。
const unique = Array.from(new Set(filteredViews.map(a => a.id)))
.map(id => {
return filteredViews.find(a => a.view_name === id)
})
任何帮助将不胜感激
解决方案
假设您的数据如下所示:
const data = [
{parent1: {'child_id_1': 'value_child_1'}},
{parent1: {'child_id_1_1': 'value_child_1_1'}},
{parent2: {'child_id_2_1': 'value_child_2_1'}},
{parent2: {'child_id_2_2': 'value_child_2_2'}},
{parent2: {'child_id_2_3': 'value_child_2_3'}},
]
使用香草方法,您可以这样做:
let unique = {};
data.forEach(d => {
let key = Object.keys(d)[0]; // assuming your object has a single key
if (!unique[key]) { unique[key] = []; }
unique[key].push(d[key]);
});
导致:
{
"parent1": [
{"child_id_1":"value_child_1"},
{"child_id_1_1":"value_child_1_1"}
],
"parent2": [
{"child_id_2_1":"value_child_2_1"},
{"child_id_2_2":"value_child_2_2"},
{"child_id_2_3":"value_child_2_3"}
]
}
推荐阅读
- javascript - 在 inputpicker 中手动设置一个值
- amazon-web-services - ALB/Lambda 和目标组的配置问题
- distributed-system - 当每次写入都不需要 fsync 时,raft 如何实现强一致性
- string - 如何从一行中删除某些单词,但将其余部分放入带有批处理的字符串/变量中?
- python - Matplotlib,为学术论文绘制灰色图
- c++ - 无法在 C++ 中删除动态对象
- discord.js - 收集结束时的消息
- docker - Docker Registry 存储未更新
- sql - 如何在表中找到没有反向顺序对的对?
- react-native - redux saga 的延迟功能不起作用