
使用共享键合并数组中的 JavaScript 对象
在 JavaScript 中,通常需要将具有相似键的对象组合成单个对象。考虑给出的示例:
<code class="js">const array = [
{
name: "foo1",
value: "val1"
},
{
name: "foo1",
value: ["val2", "val3"]
},
{
name: "foo2",
value: "val4"
}
];</code>目标是将此数组重新组织为“输出”数组,其中所有值键都合并到具有共享名称的对象中。预期输出如下所示:
<code class="js">const output = [
{
name: "foo1",
value: ["val1", "val2", "val3"]
},
{
name: "foo2",
value: ["val4"]
}
];</code>合并对象
解决此问题的一种方法是使用以下步骤:
示例代码
以下代码实现了所描述的方法:
<code class="js">const array = [
{
name: "foo1",
value: "val1"
},
{
name: "foo1",
value: ["val2", "val3"]
},
{
name: "foo2",
value: "val4"
}
];
let output = [];
array.forEach(item => {
const existing = output.filter(v => v.name == item.name);
if (existing.length) {
const existingIndex = output.indexOf(existing[0]);
output[existingIndex].value = output[existingIndex].value.concat(item.value);
} else {
if (typeof item.value == 'string') item.value = [item.value];
output.push(item);
}
});
console.log(output);</code>此代码将生成所需的输出数组,其中所有同名对象的值都会合并。
以上是如何使用共享键合并数组中的 JavaScript 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!