
共有キーを使用して配列内の JavaScript オブジェクトを結合する
JavaScript では、多くの場合、類似したキーを持つオブジェクトを 1 つのオブジェクトに結合する必要があります。 。次の例を考えてみましょう。
<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>オブジェクトのマージ
この問題に対する 1 つのアプローチは、次の手順を使用することです。
コード例
次のコードは、説明されているアプローチを実装します。
<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 中国語 Web サイトの他の関連記事を参照してください。