【发布时间】:2018-03-12 11:25:14
【问题描述】:
有以下示例集合:
var data = [
{ 'fabrication_order' : 'A', 'start_date' : '2018-03-10 09:00:00', 'end_date' : '2018-04-12 10:30:00', 'product_family': 'car', 'price' : 70},
{ 'fabrication_order' : 'B', 'start_date' : '2018-03-14 12:00:00', 'end_date' : '2018-04-16 13:30:00', 'product_family': 'bike', 'price' : 20},
{ 'fabrication_order' : 'C', 'start_date' : '2018-03-14 13:00:00', 'end_date' : '2018-04-14 13:30:00', 'product_family': 'bike', 'price' : 20}
]
我可以使用 lodash 进行统计:
stats = _(data)
.groupBy('product_family')
.map((objs, key) => ({
'product_family' : key,
'sum_price' : _.sumBy(objs, 'price')
}))
.value();
[ { "product_family": "car", "sum_price": 70 }, { "product_family": "bike", "sum_price": 40 } ]
太好了。但是,如果我想计算生产持续时间怎么办。唯一的方法是通过添加自定义字段来转换我的输入数据(在使用 lodash 之前):
data = data.forEach(function(element){
element['production_duration'] = moment(element.end_date).diff(moment(element.start_date), 'hours')
})
或者有没有更有效的方法来实现这一点?
【问题讨论】:
标签: javascript collections lodash