首頁 >web前端 >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"]}
]

  1. 建立群組名稱到值的對應:使用reduce()方法建立從群組名稱到陣列的對應顏色。
  2. 轉換為所需格式: 透過迭代地圖的鍵並為每個群組建立一個物件來建立一個新數組,並將其群組屬性設為鍵並設定其顏色屬性與該鍵關聯的顏色數組。

以下是 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn