ホームページ  >  記事  >  ウェブフロントエンド  >  共有キーを使用して配列内の JavaScript オブジェクトをマージするにはどうすればよいですか?

共有キーを使用して配列内の JavaScript オブジェクトをマージするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 23:43:30872ブラウズ

How to Merge JavaScript Objects in an Array with Shared Keys?

共有キーを使用して配列内の 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 つのアプローチは、次の手順を使用することです。

  1. forEach() を使用して、配列内の各オブジェクトを繰り返し処理します。
  2. 出力配列をフィルタリングして、同じ名前のキーを持つ既存のオブジェクトを見つけます。
  3. 既存のオブジェクトが見つかった場合は、現在のオブジェクトの値を値配列に追加します。
  4. 既存のオブジェクトが見つからない場合は、現在のオブジェクトのプロパティを使用して新しいオブジェクトを作成し、出力配列に追加します。
  5. 可能性を処理します。

コード例

次のコードは、説明されているアプローチを実装します。

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。