繁体   English   中英

Javascript groupby sum给出错误的结果

[英]Javascript groupby sum giving wrong results

我有这个字典数据列表我想应用 groupby 然后做总和但我得到的end_date2020-05-11 00:00:00+00而不是2020-05-17 00:00:00+00在最后的聚合中

请建议我哪里做错了。

输入数据 :-

data = [
{start_date: "2020-05-11 00:00:00+00", end_date: "2020-05-17 00:00:00+00", id: "ola", amount: 10},
{start_date: "2020-05-11 00:00:00+00", end_date: "2020-05-17 00:00:00+00", id: "ola", amount: 2}
]

预期结果 :-

start_date: "2020-05-11 00:00:00+00", end_date: "2020-05-17 00:00:00+00", amount: 12}

当前结果:-

start_date: "2020-05-11 00:00:00+00", end_date: "2020-05-11 00:00:00+00", amount: 12}

分组公式:-

var result = _(data)
            .groupBy(x => x.start_date, y => y.end_date)
            .map((value, key) => ({start_date: key, end_date : key, amount: _.sumBy(value, 'amount')}))
            .value();

如果有任何其他 Javascript 解决方案,请提出建议。 谢谢

因为你链接data ,所以下groupBy只需要采取一个参数(这是在变换键的iteratee DOC

您可以制作start_dateend_date组合的组键

 const data = [ { start_date: "2020-05-11 00:00:00+00", end_date: "2020-05-17 00:00:00+00", id: "ola", amount: 10, }, { start_date: "2020-05-11 00:00:00+00", end_date: "2020-05-17 00:00:00+00", id: "ola", amount: 2, }, ] const result = _(data) .groupBy((obj) => [obj.start_date, obj.end_date].join("to")) .map((value, key) => ({ start_date: key.split("to")[0], end_date: key.split("to")[1], amount: _.sumBy(value, "amount"), })) .value() console.log(result)
 <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js"></script>

使用 start 和 end 作为键的简单 reduce 循环

 data = [{ start_date: "2020-05-11 00:00:00+00", end_date: "2020-05-17 00:00:00+00", id: "ola", amount: 10 }, { start_date: "2020-05-11 00:00:00+00", end_date: "2020-05-17 00:00:00+00", id: "ola", amount: 2 } ] const groupIt = data => { const groupings = data.reduce((grps, item) => { const { start_date, end_date, amount } = item; const key = `${start_date}-${end_date}`; grps[key] = grps[key] || { start_date, end_date, amount: 0 }; grps[key].amount += amount; return grps; }, {}); return Object.values(groupings); } const result = groupIt(data); console.log(result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM