对 JavaScript 数组重复值求和
Sum javascript arrays repeated value
我正在尝试对重复的javascript数组值求和,我希望每个键在此总和之后都有一个值。
下面是 javascript 数组示例:
var myArray = [ {'TR-01':1}, {'TR-02':3}, {'TR-01':3}, {'TR-02':5}];
所需的格式化数组应如下所示:
var newArray = [ {'TR-01':4}, {'TR-02':8}];
我们如何在javascript中做到这一点?
当你这样做时
var obj = {
'TR-01':1,
'TR-02':3,
'TR-01':3,
'TR-02':5
};
如果现在执行alert(obj["TR-01"]);
,则可以看到输出3
。
或者一个console.log(obj)
,输出为:{TR-01: 3, TR-02: 5}
。您不知道以前的值。
你基本上覆盖了它们。我会说你不能这样做。至少不是你想象的那样。
更新
var myArray = [
{'TR-01':1},
{'TR-02':3},
{'TR-01':3},
{'TR-02':5}
];
var newArray = [];
var newObj = {};
for(var i = 0; i < myArray.length; i++) {
for(var prop in myArray[i]) {
if(!newObj.hasOwnProperty(prop)) {
newObj[prop] = 0;
}
newObj[prop] += myArray[i][prop];
}
}
for(var prop in newObj) {
var obj = {};
obj[prop] = newObj[prop];
newArray.push(obj);
}
console.log(newObj); // OUTPUT: {TR-01: 4, TR-02: 8}
console.log(newArray); // OUTPUT: [ { TR-01: 4 }, { TR-02: 8 } ]
我相信有更简单的方法,我也只是在学习JS。 :)
具有
Array.map()
和Object.keys()
的灵活解决方案:
var myArray = [
{'TR-01':1},
{'TR-02':3},
{'TR-01':3},
{'TR-02':5}
];
var summedArray = [], props = {}, prop;
myArray.map(function(obj){
var prop = Object.keys(obj)[0]; // get single object property name
props[prop] = (Object.keys(props).indexOf(prop) !== -1)? (props[prop] + obj[prop]) : obj[prop];
});
for (prop in props) {
var newObj = {};
newObj[prop] = props[prop];
summedArray.push(newObj); // adding object to final array
}
console.log(summedArray); // [{'TR-01':4}, {'TR-02':8}]
您可以使用临时对象,其中对象用于引用,数组用于结果:
var myArray = [{ 'TR-01': 1 }, { 'TR-02': 3 }, { 'TR-01': 3 }, { 'TR-02': 5 }],
result = myArray.reduce(function (r, a) {
Object.keys(a).forEach(function (k) {
var o = {};
if (!(k in r.obj)) {
o[k] = 0;
r.obj[k] = o;
r.array.push(o);
}
r.obj[k][k] += a[k];
});
return r;
}, { array: [], obj: {} }).array;
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
相关文章:
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- javascript 在求和时返回 NaN
- 使用绑定的简单JavaScript/jQuery求和函数
- 文本框的 JavaScript 求和
- 如何让、要求和原型协同工作以在 javascript 中制作对象
- Javascript Array 的求和函数问题
- 如何使用javascript对每个表的所有数字求和
- 在javascript中使用reduce对数组中的变量求和
- JavaScript对数组中的数字求和
- 如何在LiveCycle-Javascript中完成表行的部分求和
- 求和值时出现Javascript舍入问题
- Javascript:对集合中的对象求和
- 我正在为PDF JavaScript开发求和脚本
- 使用 Javascript、Underscore 或 Lodash 分组 + 求和
- JavaScript 对多维数组元素值求和
- 许多 Javascript 求和字段选择并将此值放入输入中
- 使用 Javascript 对数据层中的两个值求和
- 不同的Javascript在减法和求和上的行为
- 如何对不空的值求和
Javascript或JQuery中的元素 - 求和Javascript变量(实际上是字符串)