Javascript 基于键的对象数组归约与求和
假设我在CoffeeScript中有以下对象数组:Javascript 基于键的对象数组归约与求和,javascript,object,coffeescript,reduce,Javascript,Object,Coffeescript,Reduce,假设我在CoffeeScript中有以下对象数组: data = [ {date: "04/27/2017", number: 1}, {date: "04/28/2017", number: 2}, {date: "04/27/2017", number: 3}, {date: "04/29/2017", number: 4}, {date: "04/29/2017", number: 5} ] 我希望将数字值与日期值相加,创建此新数组: new_data = [ {
data = [
{date: "04/27/2017", number: 1},
{date: "04/28/2017", number: 2},
{date: "04/27/2017", number: 3},
{date: "04/29/2017", number: 4},
{date: "04/29/2017", number: 5}
]
我希望将数字值与日期值相加,创建此新数组:
new_data = [
{date: "04/27/2017", number: 4},
{date: "04/28/2017", number: 2},
{date: "04/29/2017", number: 9}
]
使用reduce
方法似乎是合理的,例如:
new_data = data.reduce (x, y) ->
some logic
但我一辈子都想不出/找不到这样做的方法 您可以通过两个步骤完成您想要的操作
let reducer = (acc, cur) => {
if (acc[cur.date] === undefined)
acc[cur.date] = cur.number
else
acc[cur.date] = acc[cur.date] + cur.number
return acc;
}
let grouped = data.reduce(reducer, {});
Object.keys(counterRes).map((date) => { return { date, number: grouped[date] } })