将此 json 转换为正确的格式链 flatten groupby
Getting this json into the correct format chain flatten groupby
我已经尝试了很长时间来完成这项工作,但对于我认为非常简单的事情仍然没有答案,试图对类型进行分组和计数,我有这个:
[
{
"type": "TypeOne",
"day": "2016-07-07"
},
{
"type": "TypeOne",
"day": "2016-07-07"
},
{
"type": "TypeTwo",
"day": "2016-07-07"
},
{
"type": "TypeTwo",
"day": "2016-07-08"
},
{
"type": "TypeTwo",
"day": "2016-07-08"
},
{
"type": "TypeThree",
"day": "2016-07-08"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeFour",
"day": "2016-07-09"
},
{
"type": "TypeTwo",
"day": "2016-07-09"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeFour",
"day": "2016-07-09"
}
]
我需要能够按日期计算 Type 的出现次数并将其转换为这种结构:
[
{
"date":"2016-07-07"
,"TypeOne":2
,"TypeTwo":1
,"count":3
},
{
"date":"2016-07-08"
,"TypeTwo":2
,"TypeThree":1
,"count":3
},
{
"date":"2016-07-09"
,"TypeTwo":1
,"TypeThree":3
,"TypeFour":2
,"count":6
}
]
我一直试图让它与下划线、链、groupBy 和地图一起工作,但无法实现。任何方向表示赞赏。
只需遍历结构并聚合值:
var dates = [
{
"type": "TypeOne",
"day": "2016-07-07"
},
{
"type": "TypeOne",
"day": "2016-07-07"
},
{
"type": "TypeTwo",
"day": "2016-07-07"
},
{
"type": "TypeTwo",
"day": "2016-07-08"
},
{
"type": "TypeTwo",
"day": "2016-07-08"
},
{
"type": "TypeThree",
"day": "2016-07-08"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeFour",
"day": "2016-07-09"
},
{
"type": "TypeTwo",
"day": "2016-07-09"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeFour",
"day": "2016-07-09"
}
];
var result = [];
dates.forEach(function(d) {
var date = result.find(function(da) { return da.date === d.day; });
if (!date) {
date = { date: d.day, count: 0 };
result.push(date);
}
date.count++;
if(!date[d.type]) {
date[d.type] = 1;
} else {
date[d.type]++;
}
});
console.log(result);
我已经尝试了很长时间来完成这项工作,但对于我认为非常简单的事情仍然没有答案,试图对类型进行分组和计数,我有这个:
[
{
"type": "TypeOne",
"day": "2016-07-07"
},
{
"type": "TypeOne",
"day": "2016-07-07"
},
{
"type": "TypeTwo",
"day": "2016-07-07"
},
{
"type": "TypeTwo",
"day": "2016-07-08"
},
{
"type": "TypeTwo",
"day": "2016-07-08"
},
{
"type": "TypeThree",
"day": "2016-07-08"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeFour",
"day": "2016-07-09"
},
{
"type": "TypeTwo",
"day": "2016-07-09"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeFour",
"day": "2016-07-09"
}
]
我需要能够按日期计算 Type 的出现次数并将其转换为这种结构:
[
{
"date":"2016-07-07"
,"TypeOne":2
,"TypeTwo":1
,"count":3
},
{
"date":"2016-07-08"
,"TypeTwo":2
,"TypeThree":1
,"count":3
},
{
"date":"2016-07-09"
,"TypeTwo":1
,"TypeThree":3
,"TypeFour":2
,"count":6
}
]
我一直试图让它与下划线、链、groupBy 和地图一起工作,但无法实现。任何方向表示赞赏。
只需遍历结构并聚合值:
var dates = [
{
"type": "TypeOne",
"day": "2016-07-07"
},
{
"type": "TypeOne",
"day": "2016-07-07"
},
{
"type": "TypeTwo",
"day": "2016-07-07"
},
{
"type": "TypeTwo",
"day": "2016-07-08"
},
{
"type": "TypeTwo",
"day": "2016-07-08"
},
{
"type": "TypeThree",
"day": "2016-07-08"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeFour",
"day": "2016-07-09"
},
{
"type": "TypeTwo",
"day": "2016-07-09"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeThree",
"day": "2016-07-09"
},
{
"type": "TypeFour",
"day": "2016-07-09"
}
];
var result = [];
dates.forEach(function(d) {
var date = result.find(function(da) { return da.date === d.day; });
if (!date) {
date = { date: d.day, count: 0 };
result.push(date);
}
date.count++;
if(!date[d.type]) {
date[d.type] = 1;
} else {
date[d.type]++;
}
});
console.log(result);