4
var arr = [[7,50],[7,60],[8,40]];如果有重複值,那麼Javascript合併數組
如何合併這個數組才能成爲這樣的結果? [[7,110],[8,40]];
讓說如果我有數百這些小型陣列由陣列
var arr = [[7,50],[7,60],[8,40]];如果有重複值,那麼Javascript合併數組
如何合併這個數組才能成爲這樣的結果? [[7,110],[8,40]];
讓說如果我有數百這些小型陣列由陣列
我建議你使用的地圖存儲結果,而不是一個數組包裹。這裏是一個O(n)的解決方案:
var arr = [[7,50], [7,60], [8,40]];
function merge_array(arr) {
var map = {};
for (var i = 0;i<arr.length;i++) {
if (arr[i][0] in map) {
map[arr[i][0]] += arr[i][1];
} else {
map[arr[i][0]] = arr[i][1];
}
}
return map;
}
如果你是一個數組作爲輸出死心塌地,你就可以將其轉換。
這裏是與陣列結果O(n)的溶液:
function merge(arr){
var map = {};
var key;
//Constructing the map
for (var i = 0 ; i < arr.length ; i++) {
key = arr[i][0];
if (typeof map[key] != 'undefined'){
map[key] += arr[i][1];
} else {
map[key] = arr[i][1];
}
}
//Converting the map to an array
var result = [];
for (key in map){
result.push([key, map[key]]);
}
return result;
}
做通過它冒泡排序和環:P – 2012-02-09 07:23:47