gpt4 book ai didi

javascript - 如何组合键值相同的多个JSON对象

转载 作者:搜寻专家 更新时间:2023-11-01 00:11:22 25 4
gpt4 key购买 nike

我正在尝试组合共享相同模块键值的对象,即“信用卡”。我需要为每个具有不同公司的独特模块返回一个对象。 id 和 prod key 并不重要。

这是我需要转换的对象:

const data = [
{module: "credit_cards", id: "1", company: "ABC", prod: "1"},
{module: "credit_cards", id: "2", company: "XYZ", prod: "2"},
{module: "credit_cards", id: "3", company: "EFG", prod: "2"},
{module: "credit_cards", id: "2", company: "XYZ", prod: "2"},
{module: "mortgages", id: "4", company: "EFG", prod: "3"}
]

我需要返回这样的东西:

const result = [
{module: "credit_cards", company: ["ABC", "XYZ", "EFG"]},
{module: "mortgages", company: ["EFG"]}
]

到目前为止,我已经尝试过这个功能:

const result = data.reduce(function(r, e) {
return Object.keys(e).forEach(function(k) {
if(!r[k]) r[k] = [].concat(e[k])
else r[k] = r[k].concat(e[k])
}), r
}, {})

但它只是将所有键/值连接在一起...

任何帮助都会很棒,谢谢 :)

最佳答案

可以先用Array.reduce()通过 Set 上的 module 键对 companies 进行分组.在第二步,您可以使用 array.Map()在生成的对象上 .entries()得到最终想要的结果:

const data = [
{module: "credit_cards", id: "1", company: "ABC", prod: "1"},
{module: "credit_cards", id: "2", company: "XYZ", prod: "2"},
{module: "credit_cards", id: "3", company: "EFG", prod: "2"},
{module: "credit_cards", id: "2", company: "XYZ", prod: "2"},
{module: "mortgages", id: "4", company: "EFG", prod: "3"}
];

let res = data.reduce((acc, {module, company}) =>
{
acc[module] = acc[module] || new Set();
acc[module].add(company);
return acc;
}, {})

res = Object.entries(res).map(
([module, companies]) => ({module, company: [...companies]})
);

console.log(res);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

关于javascript - 如何组合键值相同的多个JSON对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56123001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com