我正在尝试通过日期对数组中的对象进行分组:
var list = [
{
date: "2017-01-01",
type: "type1",
amount: 100
},
{
date: "2017-01-01",
type: "type2",
amount: 150
},
{
date: "2017-01-02",
type: "type1",
amount: 200
}
]
我想要得到类似于这样的东西:
var dateArr = [
{
date: "2017-01-01",
activities: [
{
type: "type1",
amount: 100
},
{
type: "type2",
amount: 150
}]
}
]
我已经尝试了一些方法……比如使用underscore(来自这里https://dev59.com/6WUo5IYBdhLWcg3woAqu#15888912):
var dateArr = _
.chain(list)
.groupBy('date')
.map(function(value, key) {
return {
date: key,
activities: [{
type: _.pluck(value, 'type'),
amount: _.pluck(value, 'amount')
}]
}
})
.value();
我也尝试过这个(来自这里https://stackoverflow.com/a/31373860/4989305)
var dateArr = {};
list.forEach(function(item){
dateArr[item.date] = dateArr[item.date]||[];
dateArr[item.date].push(item);
});
但是,由于某些原因两者都返回空。
非常感谢任何帮助。
list.forEach(
这个可以正常工作。dateArr
不是一个数组,而是一个对象。在你的最后一段代码后尝试使用console.log(dateArr)
。 - Cerbrusthen()
函数解决了这个问题。 - Funktion