对多维数组中的数值求和
sum numeric values in a multidimentional array
我在Javascript中有一个这样的数组:
var scores = [
{"firstName":"John", "value": 89},
{"firstName":"Peter", "value": 151},
{"firstName":"Anna", "value": 200},
{"firstName":"Peter", "value": 22},
{"firstName":"Anna","value": 60}
];
我想转换这个数组,以便组合相似的名字的值。我期望的结果是:
var scores = [
{"firstName":"John", "value": 89},
{"firstName":"Peter", "value": 173},
{"firstName":"Anna", "value": 260}
];
认为,
Just:
var scores = [{
"firstName": "John",
"value": 89
}, {
"firstName": "Peter",
"value": 151
}, {
"firstName": "Anna",
"value": 200
}, {
"firstName": "Peter",
"value": 22
}, {
"firstName": "Anna",
"value": 60
}];
var names = {};
var new_arr = [];
scores.forEach(function(entry) {
if (names.hasOwnProperty(entry.firstName)) {
new_arr[names[entry.firstName]].value += entry.value;
} else {
names[entry.firstName] = new_arr.length;
new_arr.push({
"firstName": entry.firstName,
"value": entry.value
});
}
});
console.log(new_arr);
这是一个两步解决方案。首先数一下所有的项目。其次,将结果格式化为所需的样式。
var scores = [
{ "firstName": "John", "value": 89 },
{ "firstName": "Peter", "value": 151 },
{ "firstName": "Anna", "value": 200 },
{ "firstName": "Peter", "value": 22 },
{ "firstName": "Anna", "value": 60 }
];
var result = [],
r0 = scores.reduce(function (r, a) {
r[a.firstName] = (r[a.firstName] || 0) + a.value;
return r;
}, {}), // { "John": 89, "Peter": 173, "Anna": 260 }
i;
for (i in r0) {
result.push({ firstName: i, value: r0[i] });
}
document.getElementById('out').innerHTML = JSON.stringify(result, null, 4);
<pre id="out"></pre>
var result = [],
names = [],
index;
var scores = [
{"firstName":"John", "value": 89},
{"firstName":"Peter", "value": 151},
{"firstName":"Anna", "value": 200},
{"firstName":"Peter", "value": 22},
{"firstName":"Anna","value": 60}
];
scores.forEach(function (score) {
index = names.indexOf(score.firstName);
if (index === -1) {
index = names.push(score.firstName) - 1;
result.push({firstName: score.firstName, value: 0});
}
result[index].value += score.value;
});
console.log(result);
相关文章:
- 如何按对象数组进行分组和求和
- 求和d3对象数组上的元素
- 如何使用数组减少来求和对象属性长度,不带类型
- 求和并组织数组
- 用于从包含最大求和的整数数组中提取子数组的算法
- JavaScript 对多维数组元素值求和
- 合并两个对象数组,同时对特定键求和
- 对关联数组键值求和并按键分组
- 如何在 AngularJS ng-repeat中对 Json 数组值求和
- 数组中对象的值求和
- 在对象数组中对具有相同对象属性 B 的 JavaScript 对象属性 A 值求和
- 只是尝试对 JavaScript 数组的 2 个特定元素求和
- 对 JavaScript 数组重复值求和
- 如何对文本框数组中存储的值求和
- 为什么数组和对象([ ] + {})的求和是javascript中的一个字符串
- 如何合并两个对象数组,并在 JavaScript 中对重复对象键的值求和
- JS-数组的求和元素
- 对对应于另一个数组的数组的值求和
- 如何使用Ramda通过索引对n数组求和
- 对JSON数组响应中的值求和