我已经查看了论坛,看看我是否能回答这个问题,但到目前为止,我还没有。我有这个二维数组,如果它们是相同的,我想总结它们的值。这是一个例子。
CAR CAH 394
CAR CAH 96
CAR CAP 268
DOR CAF 71
DOR CAP 96
DOR CAP 268
VAC GILAB 71
排序数组后,我有上述值。如何在arraylist中添加所有重复项。在这种情况下,它会影响CAR | CAH和DOR | CAP。因此,不是返回重复项,而是使用合并的总和返回一个副本。
答案 0 :(得分:2)
如果我正在理解你正确的问题(因为它确实不是很清楚),并且鉴于你的数组已经排序,那么我可以通过使用实现你想要的Array.reduce:
var source = [
["CAR", "CAH", 394],
["CAR", "CAH", 96],
["CAR", "CAP", 268],
["DOR", "CAF", 71],
["DOR", "CAP", 96],
["DOR", "CAP", 268],
["VAC", "GILAB", 71]
];
var last;
var folded = source.reduce(function(prev,curr){
if (last) {
if (last[0] === curr[0] && last[1] === curr[1]) {
last[2] += curr[2];
return prev;
}
}
last = curr;
prev.push(curr);
return prev;
},[]);
alert(JSON.stringify(folded));
您基本上是通过将当前值与最后一个值进行比较来构建新数组。如果前两个元素匹配,则将最后一个元素添加到上一个值并返回该数组。如果它们不匹配,则将新值推送到数组上。