【发布时间】:2020-08-28 12:27:42
【问题描述】:
我有一个对象数组,我需要根据一个属性对其进行缩减并对另一个属性求和。 This solution is pretty much what I'm after,但我需要避免使用_.chain,因为我只导入特定的模块。
我尝试过使用 flow,但没有得到任何值:
const sumBy = require('lodash/fp/sumBy');
const flow = require('lodash/fp/flow');
const groupBy = require('lodash/fp/groupBy');
const map = require('lodash/fp/map');
const list = [
{ property: 'foo', value: 1 },
{ property: 'foo', value: 3 },
{ property: 'bar', value: 2 },
{ property: 'bar', value: 3 },
{ property: 'chu', value: 8 },
];
const foo = flow(
groupBy('property'),
map((objs, key) => {
return {
property: key,
value: sumBy(objs, 'value')
}
})
)(list)
返回
[
{ property: undefined, value: 0 },
{ property: undefined, value: 0 },
{ property: undefined, value: 0 }
]
理想情况下,我想在原版 es6 中执行此操作,我已经尝试过了,但不确定如何计算总和。
const bar = list.reduce((o, v) => {
return {...o, [v.property]: v.value}
}, {})
【问题讨论】:
-
@Ruben 的 ES6 解决方案是我解决这个问题的首选方法。但出于好奇,谁能回答我在 lodash 流中做错了什么?当我使用chain方法时,我得到了正确的结果
标签: javascript lodash