先有需求
timetables: [
['大学英语',
'大学英语',
'大学英语',
'',
'',
'',
'毛概',
'毛概',
'',
'',
'',
'选修'
],
['',
'',
'信号与系统',
'信号与系统',
'模拟电子技术基础',
'模拟电子技术基础',
'',
'',
'',
'',
'',
''
],
['大学体育',
'大学体育',
'形势与政策',
'形势与政策',
'',
'',
'',
'',
'',
'',
'',
''
]
]
每一个二维数组与上一个数组如果相同下一个长度变为零
let newTable = []
timetables.forEach((list,i) =>{
// 给每一天为一个空数组
if(!newTable[i]) {
newTable[i] =[]
}
list.forEach((item,idx) => {
// 每一天的第一项添加一个数据
if(!idx) {
return newTable[i].push({name:item,length:1})
}
// 每一项的第二个数据
if(item == ((newTable[i][idx - 1] || {}).name) && item) {
const sameIndex = (newTable[i][idx - 1] || {}).sameIndex;
// 每一项只要记录了上一个 就进去
if(sameIndex || sameIndex === 0) {
newTable[i][sameIndex].length++
return newTable[i].push({ name: item, length: 0, sameIndex: sameIndex })
}
newTable[i][idx - 1].length++
return newTable[i].push({ name: item, length: 0, sameIndex: idx - 1 })
}else {
return newTable[i].push({ name: item, length: 1 })
}
})
})
return newTable; //处理完的结果