Я хотел бы агрегировать свойства в массиве объектов и создать другой объект с итогами.Совокупные свойства объекта в JavaScript
Вот пример того, что я работаю над:
Ниже массив объектов, и мы должны суммуdisplayAd_imp
, videoAd_imp
, tv_imp
на основе WeekNo
диапазона.
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
}]
Функция ниже получает диапазон. Мы передаем данные, начальную неделю и конец недели в качестве параметров, и он фильтрует данные по желаемому диапазону. У меня есть пример 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",
}
Последняя часть, где я застрял :(
Надежда Я сделал вопрос ясно, спасибо заранее
Посмотрите на функцию уменьшения, удивительную для этого варианта использования. – bitoiu