课程表二维数组如何记录一样的

先有需求

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; //处理完的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

湖里_lx0s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值