【发布时间】:2016-07-06 23:40:00
【问题描述】:
考虑一个包含对象的数组。数组的每个对象都由label 和value 属性组成。我希望能够比较数组的每个对象,如果标签相同,则将它们的值相加,这样标签就不会重复并且具有所有先前值的总和。
例如,如果数组是这样的:
[{
label: "A",
value: 10
}, {
label: "B",
value: 20
}, {
label: "C",
value: 30
}, {
label: "C",
value: 40
}, {
label: "D",
value: 12
}, {
label: "D",
value: 23
}]
最后我会得到一个只有四个标签(A、B、C、D)的数组,A 的值为 10,B 的值为 20,C 的值为 70,D 的值为 35。
我尝试使用 for 循环:
for (i = 1; i < transformation.length; i++) {
if (transformation[i-1].label == transformation[i].label) {
result.label.push = transformation[i].label;
result.value.push = transformation[i-1].value + transformation[i].value;
}
};
但我被困在这里,不知道如何处理非重复值。 我需要最终的数组仍然是一个数组,而不是一个对象。
【问题讨论】:
标签: javascript arrays sorting array-algorithms