如何在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"}
]
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);
如果您创建如下对象 -
{
a: "1",
b: "2",
c: "3",
c: "4",
d: "5"
}
JavaScript 引擎将按如下方式转换它 -
{
a: "1",
b: "2",
c: "4",
d: "5"
}
所以你无法实现你提到的。