【发布时间】:2018-09-05 08:02:58
【问题描述】:
返回匹配 object.date 和求和 object.value 的对象数组
[
【问题讨论】:
-
你的问题是什么?
标签: javascript reactjs ecmascript-6
返回匹配 object.date 和求和 object.value 的对象数组
[
【问题讨论】:
标签: javascript reactjs ecmascript-6
要对按日期分组的值求和,您可以使用中间对象作为地图,然后对每个日期求和:
function sumValuesGroupByDate(input) {
var dates = {};
input.forEach(dv => dates[dv.date] = ((dates[dv.date] || 0) + dv.value));
return Object.keys(dates).map(date => ({date, value: dates[date]}));
}
var input = [
{date: "2017-07-10", value: 1}, {date: "2017-07-11", value: 3},
{date: "2017-07-10", value: 5}, {date: "2017-07-11", value: 7}
];
console.log(sumValuesGroupByDate(input));
如果您喜欢单行的原始 ES6 JavaScript 功能,那就是:
function sumValuesGroupByDate(input) {
return Object.entries(input.reduce((dvs, {date: d, value: v}) => ({...dvs, [d]: (dvs[d] || 0) + v}), {})).map(([date, value]) => ({date, value}));
}
var input = [
{date: "2017-07-10", value: 1}, {date: "2017-07-11", value: 3},
{date: "2017-07-10", value: 5}, {date: "2017-07-11", value: 7}
];
console.log(sumValuesGroupByDate(input));
【讨论】:
返回匹配日期值的对象数组:
const resultArray = array.filter(arrayItem => arrayItem.date === dateValue);
返回值的总和
const reducer = (summedValue, value) => summedValue + value;
const sum = array.reduce(reducer));
【讨论】: