我有一个以下数组,其中包含日期。
var arrs= ["2016/10/4", "2016/10/4", "2016/10/7", "2016/10/7", "2016/10/7"];
我正在减少此数组以获取相同日期的计数,因此我使用以下代码
var maps = arrs.reduce(function(prev, cur) {
prev[cur] = (prev[cur] || 0) + 1;
return prev;
}, {});
console.log(maps);
现在,计数可用于浏览器控制台中的每个唯一日期,如下所示
Object {2016/10/4: 2, 2016/10/7: 3}
我想为这个reduce对象创建json对象。
[{
date : 2016/10/4,
value : 2
},
{
date : 2016/10/7,
value : 3
}]
如何获得它,我无法获得长度或为每个地图制作。
答案 0 :(得分:2)
生成对象后,使用Object.keys
和Array#map
方法生成所需的数组。
var arrs = ["2016/10/4", "2016/10/4", "2016/10/7", "2016/10/7", "2016/10/7"];
var maps = arrs.reduce(function(prev, cur) {
prev[cur] = (prev[cur] || 0) + 1;
return prev;
}, {});
maps = Object.keys(maps) // get all property name
// iterate and generate eleemnt
.map(function(k) {
// generate prefered structure of array eleement
return {
date: k,
value: maps[k]
};
});
console.log(maps);