ホームページ >ウェブフロントエンド >jsチュートリアル >オブジェクトの配列を特定のプロパティでグループ化し、他のプロパティを配列に統合するにはどうすればよいですか?

オブジェクトの配列を特定のプロパティでグループ化し、他のプロパティを配列に統合するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 12:08:14467ブラウズ

How can I group an array of objects by a specific property and consolidate other properties into arrays?

オブジェクト プロパティによる配列アイテムのグループ化

グループ プロパティとカラー プロパティを持つオブジェクトの配列が与えられた場合、目的はグループ値によってアイテムをグループ化し、色を統合することです。各グループの値。

問題

提供された配列は次のようになります。 this:

myArray = [
  {group: "one", color: "red"},
  {group: "two", color: "blue"},
  {group: "one", color: "green"},
  {group: "one", color: "black"}
]

必要な出力は次のような配列です:

myArray = [
  {group: "one", color: ["red", "green", "black"]},
  {group: "two", color: ["blue"]}
]

Solution

  1. グループ名と値のマップを作成する: グループ名から配列へのマッピングを作成するには、reduce() メソッドを使用します。 color.
  2. 必要な形式に変換します: マップのキーを反復処理し、グループ プロパティをキーに設定し、その color プロパティを設定して各グループのオブジェクトを作成することにより、新しい配列を作成します。そのキーに関連付けられた色の配列に変換します。

以下は JavaScript です。実装:

var myArray = [
    {group: "one", color: "red"},
    {group: "two", color: "blue"},
    {group: "one", color: "green"},
    {group: "one", color: "black"}
];

var group_to_values = myArray.reduce(function (obj, item) {
    obj[item.group] = obj[item.group] || [];
    obj[item.group].push(item.color);
    return obj;
}, {});

var groups = Object.keys(group_to_values).map(function (key) {
    return {group: key, color: group_to_values[key]};
});

console.log("groups:");
console.log(JSON.stringify(groups, null, 4));

このコードは、グループ プロパティによってグループ化された項目と配列に統合された色の値を使用して、目的の出力を作成します。

以上がオブジェクトの配列を特定のプロパティでグループ化し、他のプロパティを配列に統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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