後端返回了時間戳,前端按照時間分類。
正常情況下,這種都是後臺進行處理,當然也不能排除例外情況。
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) 輸出結果