当两行与另一列的总和相同时,返回数组中的单行

时间:2015-02-18 16:56:59

标签: javascript arrays sorting for-loop

我有一个存储在数组中的查询结果,并且一些记录在其中一列上具有相同的值,这应该是它应该是的。现在对于那些在第一列中具有相同数据的记录,我想总结第二列中的值并返回一行,第二列是2行的总和。这是一个例子。

RADSR 41

SOFTAC 10

SOFTAC 102

SOFTBC 44

SOFTCS 2

SOFTDW 8

if (sending != undefined){
        gist.push([value1, value2]);
    }   
        gist.sort();

for (var index = 0; index < gist.length; index++) {
                xmlMs += "<td>" + gist[index][0] + "</td>";         
                xmlMs += "<td>" + gist[index][1] + "</td>";
}

所以我的问题是我想只返回一行(SOFTAC)而不是第2行和第2行。 3因为它们是相同的并在那一行中总结它们的值。

1 个答案:

答案 0 :(得分:1)

如果不诉诸第三方库,这是非常重要的:

首先,您可以创建一个&#34;地图&#34;独特的密钥及其累积值:

var gistMap = gist.reduce(function(result, current) {
    var key = current[0], value = current[1];
    result[c] = (result[c] || 0) + value;
    return result;
}, {} );

此时,您可以迭代地图(以任何顺序迭代),或者以原始格式创建新的排序数组:

var keys = Object.keys(gistMap).sort();
var newGist = keys.map(function(key) {
    return [key, gistMap[key]];
});