合併陣列中唯一項並求和 - 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)**。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP