合併陣列中唯一項並求和 - JavaScript


我們有一個二維陣列,每個子陣列都包含兩個元素,第一個是字串,在本例中是人員姓名,第二個是整數。我們需要做的是合併所有第一個元素相同的子陣列,並且第二個元素應該是相同子陣列的第二個元素之和。

以下是我們的示例陣列:

const example = [[
   'first',
   12
], [
   'second',
   19
], [
   'first',
   7
]];

應轉換為以下內容:

const example = [[
   'first',
   19
   ], [
      'second',
      19
   ]
];

假設我們編寫一個名為 combineArray() 的函式,該函式以陣列作為輸入並返回合併後的陣列作為輸出,其程式碼如下:

示例

const people = [
   ['Ram', 21],
   ['Mohan', 33],
   ['Vikram', 25],
   ['Mike', 29],
   ['Mohan', 41],
   ['Vikram', 26]
];
const combineArray = (people) => {
   const map = {};
   for(const index in people){
      const name = people[index][0];
      const prop = people[index][1];
      if(map[name]){
         map[name] += prop;
      }else{
         map[name] = prop;
      }
   }
   return Object.keys(map).map(key => [key, map[key]]);
}
console.log(combineArray(people));

輸出

控制檯輸出將是:

[ [ 'Ram', 21 ], [ 'Mohan', 74 ], [ 'Vikram', 51 ], [ 'Mike', 29 ] ]

理解 combineArray 函式:

它遍歷陣列,將名稱作為鍵,屬性作為值對映到一個物件中,確保重複鍵被加在一起,最後將物件轉換為二維陣列並返回。

此函式的時間複雜度為 **O(2n)**,通常四捨五入為 **O(n)**,空間複雜度也為 **O(n)**。

更新於:2020年8月18日

402 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.