ホームページ > ウェブフロントエンド > jsチュートリアル > 同じ「名前」キーを持つ JavaScript 配列内のオブジェクトをマージし、それらの「値」キーを組み合わせて配列にするにはどうすればよいでしょうか?

同じ「名前」キーを持つ JavaScript 配列内のオブジェクトをマージし、それらの「値」キーを組み合わせて配列にするにはどうすればよいでしょうか?

DDD
リリース: 2024-10-29 02:25:29
オリジナル
764 人が閲覧しました

How can you merge objects in a JavaScript array with the same

JavaScript での共有キーを使用した配列内のオブジェクトのマージ

問題ステートメント

配列を考慮するオブジェクトの場合、各オブジェクトには「name」キーがあります。同じ「名前」を持つオブジェクトは値を共有します。このタスクは、同じ「名前」を持つすべてのオブジェクトの「値」キーをマージして配列を再編成することです。

解決策

配列内のオブジェクトをマージするには同じ「name」キーの場合は、次のアプローチを使用できます。

<code class="javascript">var array = [{
  name: "foo1",
  value: "val1"
}, {
  name: "foo1",
  value: ["val2", "val3"]
}, {
  name: "foo2",
  value: "val4"
}];

var output = [];

array.forEach(function(item) {
  var existing = output.filter(function(v, i) {
    return v.name == item.name;
  });
  if (existing.length) {
    var 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.dir(output);</code>
ログイン後にコピー

このソリューションは、入力配列を反復処理し、同じ「name」キーを持つ既存のオブジェクトを検索し、その「値」を追加します。現在のオブジェクトを既存のオブジェクトの「値」に変換します。既存のオブジェクトがない場合は、現在のオブジェクトを出力配列に追加します。

この操作の結果は、同じ「name」キーを持つオブジェクトの「value」キーがマージされたオブジェクトの配列になります。配列。

[
  {
    name: "foo1",
    value: ["val1", "val2", "val3"]
  },
  {
    name: "foo2",
    value: ["val4"]
  }
]
ログイン後にコピー

以上が同じ「名前」キーを持つ JavaScript 配列内のオブジェクトをマージし、それらの「値」キーを組み合わせて配列にするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート