これは、マップ内の一意のインデックスを収集し、それらを合計してから、合計で配列を再生成する単純な JavaScript の方法です。
abcArr = [["A", 10], ["B", 20], ["A",30],["C",40]];
var items = {}, base, key;
for (var i = 0; i < abcArr.length; i++) {
base = abcArr[i];
key = base[0];
// if not already present in the map, add a zeroed item in the map
if (!items[key]) {
items[key] = 0;
}
// add new item to the map entry
items[key] += base[1];
}
// Now, generate new array
var outputArr = [], temp;
for (key in items) {
// create array entry for the map value
temp = [key, items[key]]
// put array entry into the output array
outputArr.push(temp);
}
// outputArr contains the result
実際のデモ: http://jsfiddle.net/jfriend00/vPMwu/
jQuery を使用する方法は次の.each
とおりです。
abcArr = [["A", 10], ["B", 20], ["A",30],["C",40]];
var items = {}, base, key;
$.each(abcArr, function(index, val) {
key = val[0];
if (!items[key]) {
items[key] = 0;
}
items[key] += val[1];
});
var outputArr = [];
$.each(items, function(key, val) {
outputArr.push([key, val]);
});
// outputArr contains the result
document.body.innerHTML = JSON.stringify(outputArr);
実際のデモ: http://jsfiddle.net/jfriend00/Q8LLT/