后端返回了时间戳,前端按照时间分类。
正常情况下,这种都是后台进行处理,当然也不能排除例外情况。
json数据:
var aa = [
{ "time" : 1505152478751 },
{ "time" : 1505224173294 },
{ "time" : 1505233473065 },
{ "time" : 1505314974043 },
{ "time" : 1505381144446 },
{ "time" : 1505394425780 },
{ "time" : 1505400646107 },
{ "time" : 1505871416094 },
{ "time" : 1505963321653 },
{ "time" : 1507175119345 }
]
希望显示的数据结构是这样:
[
{
"date": "2017年10月",
"data": [
{
"time": 1507175119345
}
]
}
// ... 后面就是 9 月 8月
]
解决方法:
可以循环给的数据,先比对年月,根据年月再循环添加年月相等的时间
var formatData = function(data){
var arr = [];
data.forEach(function(item, i){
var tmpDate = new Date(item.time);
var month = tmpDate.getMonth() + 1;
var year = tmpDate.getFullYear();
var tmpMonth = tmpDate.getMonth() + 1;
if(i === 0){
var tmpObj = {};
tmpObj.date = year + '年' + month + '月';
tmpObj.data = [];
tmpObj.data.push(item.time);
arr.push(tmpObj);
}else{
if(arr[arr.length-1]['date'] === (year + '年' + month + '月')){
arr[arr.length-1]['data'].push(item.time);
}else{
var tmpObj = {};
tmpObj.date = year + '年' + month + '月';
tmpObj.data = [];
tmpObj.data.push(item.time);
arr.push(tmpObj);
}
}
});
return arr;
}
// formatData(aa) 输出结果