项目中遇到的,记录一下:
把连续的 (间隔15分钟) 放在一个数组,然后再所有连续的放在一个大数组 例如 [[1:00-3:00] [5:00] [6:00 - 9:15]]
核心思想:如果数组的后一项,比前一项大一,则是放到startArr数组中
,否则,新建一个数组,且第一项为当前项
后端返回的数据
前端的处理
getSection(data) {
let arr = [];
let startArr = [data[0]];
for(let i = 1; i < data.length; i++) {
if(moment(data[i]).valueOf() - moment(data[i-1]).valueOf() == 900000) {
startArr.push(data[i]);
} else {
arr.push(startArr);
startArr = [data[i]];
}
}
arr.push(startArr);//此时已经是我想要的[[],[],[]]格式了,后续是项目需要
let section = arr.map((it)=>{
let start = moment(it[0]).format('HH:mm');
let end = moment(it[it.length-1]).format('HH:mm');
return [
{'xAxis':start}, {'xAxis':end}
];
});
return section;
},
section 最后的格式 [[1:00-3:00] [5:00-5:00] [6:00 - 9:15]]
总结:
- 举一反三: 判断一个数组是否连续 并组成一个数组
- js 基础夯实才是王道