我如何合并JS对象中的重复键。
输入:
{
a: "1",
b: "2",
c: "3",
c: "4",
d: "5"
}
输出:
{
a: "1",
b: "2",
c: ["3", "4"],
d: "5"
}
更新
如果该对象不存在,我将采用Sublime并手动对其进行更改。现在可以创建一个新对象并合并键了吗?
输入:
[
{a: "1"},
{b: "2"},
{c: "3"},
{c: "4"},
{d: "5"}
]
输出:
[
{a: "1"},
{b: "2"},
{c: ["3", "4"]},
{d: "5"}
]
答案 0 :(得分:3)
一个javascript对象不能有重复的键,因此这是行不通的。
相反,如果您有一个包含一个或多个键的对象数组,并且想要合并所有对象以获取目标结构,那么下面是一个示例:
const arr = [
{ a: "1", b: "3" },
{ b: "2" },
{ c: "3", d: "4" },
{ c: "4" },
{ d: "5" }
];
const merged = arr.reduce((accum, obj) => {
for (key in obj) {
accum[key] = accum[key] ? [...accum[key], obj[key]] : obj[key];
}
return accum;
}, { });
console.log(merged);
答案 1 :(得分:2)
如果您按如下所述创建类似您提到的对象-
{
a: "1",
b: "2",
c: "3",
c: "4",
d: "5"
}
JavaScript引擎将其转换如下-
{
a: "1",
b: "2",
c: "4",
d: "5"
}
因此您无法实现您提到的内容。
谢谢 希望它能帮助您理解JavaScript对象