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

Mary-Kate Olsen
リリース: 2024-10-30 23:43:30
オリジナル
909 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!