在JavaScript中聚合对象属性
Aggregate object properties in JavaScript
我想在一个对象数组中聚合属性,并生成另一个具有总数的对象。
下面是我正在做的一个例子:
下面是一个对象数组,我们需要根据WeekNo
范围对 displayAd_imp
, videoAd_imp
, tv_imp
求和。
var objArr = [{
"Title": "July 13 - July 19 2014",
"displayAd_imp": "15",
"videoAd_imp": "75",
"tv_imp": "120",
"Date": "2014-07-17T00:00:00.000Z",
"WeekNo": 29
}, {
"Title": "July 20 - July 26 2014",
"displayAd_imp": "25",
"videoAd_imp": "65",
"tv_imp": "130",
"Date": "2014-07-24T00:00:00.000Z",
"WeekNo": 30
}, {
"Title": "July 27 - Aug 2 2014",
"displayAd_imp": "35",
"videoAd_imp": "55",
"tv_imp": "140",
"Date": "2014-07-31T00:00:00.000Z",
"WeekNo": 31
}, {
"Title": "Aug 3 - Aug 9 2014",
"displayAd_imp": "55",
"videoAd_imp": "25",
"tv_imp": "20",
"Date": "2014-08-07T00:00:00.000Z",
"WeekNo": 32
}, {
"Title": "Aug 10 - Aug 17 2014",
"displayAd_imp": "10",
"videoAd_imp": "70",
"tv_imp": "120",
"Date": "2014-08-14T00:00:00.000Z",
"WeekNo": 33
}]
下面的函数获取范围。我们将data、start-week和end-week作为参数传递,然后它根据所需的范围过滤数据。我有一个JSfiddle示例来显示输出。
function CalcWeekRange(data,begin,end){
console.log(data,begin, end);
newArr = data.filter(function(item){
return (item.WeekNo >= begin && item.WeekNo <= end);
});
console.log(newArr);
}
之后,我需要将结果汇总成一个对象,看起来像:
{
"displayAd_imp": "140",
"videoAd_imp": "290",
"tv_imp": "530",
}
最后一部分是我卡住的地方:(
希望我把问题讲清楚了,提前感谢!
您可以将reduce
与初始累加器一起使用:
function weekRange(begin, end, data) {
return data.filter(function(x) {
return x.WeekNo >= begin && x.WeekNo <= end;
}).reduce(function(acc, x) {
Object.keys(acc).forEach(function(k) {
acc[k] += Number(x[k]);
});
return acc;
},{
displayAd_imp: 0,
videoAd_imp: 0,
tv_imp: 0
});
}
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何将数组项添加到对象属性中
- 设置嵌套对象属性的更好方法
- JavaScript管理具有重复属性名称的对象属性
- 如何使用element.myobj.prop等具有对象属性的元素
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何在AngularJS工厂中正确声明对象属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 使用XPath样式访问Javascript JSON对象属性
- 将javascript对象(属性+值)合并到一个对象中
- 数组:使对象属性成为数组键
- 无法从JavaScript中的函数调用对象属性
- Google Closure Advanced |无法识别对象属性|动态属性
- Javascript从匿名函数访问外部对象属性
- 从函数更改对象属性
- 如何从字符串变量访问对象属性
- 从嵌套对象属性中获取排除某个值的最高值
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 传递数量不确定的可能嵌套的对象属性