gpt4 book ai didi

javascript - 将对象数组转换为单个对象

转载 作者:行者123 更新时间:2023-12-01 01:43:04 26 4
gpt4 key购买 nike

我正在尝试将一组对象组合成一个对象,该对象合并所有类似属性的值。

objArray = [{
foo: ["f", "b"],
bar: ["e"]
}, {
foo: ["a", "c"],
bar: ["a", "c"]
}, {
foo: ["f", "b"],
bar: ["z"]
}];
const newObj = {
foo: [],
bar: []
};
objArray.forEach((obj) => {
newObj.foo.push(...obj.foo);
newObj.bar.push(...obj.bar);
});
console.log(newObj);

我使用上面的代码得到了所需的输出。使用像上面这样的 forEach 循环是实现我想要做的事情的最佳方法吗?理想情况下,我不想指定要合并的属性,我希望代码自动合并相同的属性名称。

编辑:

我需要支持 IE11

最佳答案

可以使用Object#entries()的嵌套reduce()来迭代属性,而无需在任何地方硬编码特定的属性名称

objArray = [{
foo: ["f", "b"],
bar: ["e"]
}, {
foo: ["a", "c"],
bar: ["a", "c"]
}, {
foo: ["f", "b"],
bar: ["z"]
}];

const res= objArray.reduce((acc,c)=>{
return Object.entries(c).reduce((a,[k,v])=>{
a[k] = (a[k] || []).concat(v)
return a
},acc)
},{})

console.log(res)

关于javascript - 将对象数组转换为单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224312/

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