算法 前端table单元格首列相同则进行单元格合并

本文介绍了一种需求,即当表格中首列内容相同时,如何自动合并单元格。作者分享了自己的算法思路,提供了全Demo代码,并指出该算法仅适用于首列相同数据整体出现的情况,对于离散数据则需要进行额外处理。
摘要由CSDN通过智能技术生成

最近遇到一个需求,需要把
在这里插入图片描述
这种单元格的首列相同内容进行自动合并,合并成以下样子
在这里插入图片描述
个人是觉得假设以后表格增加个编号什么的,合并成这个样子不是丑的一匹,当然了,本来实现需求的原则,参考了一下页面排版,整合了以下算法
算法如下

      // 页面中table中的第一列td标签(我给首行的首个td增加了一个类名叫a)
      var a = document.querySelectorAll('.a')
      // 页面中所有的行(我给table中每个td都增加了类型叫aoe)
      var aoe = document.querySelectorAll('.aoe')
      // item1存放总共多少种字符类型
      var item1 = []
      // item2存放每种字符类型所在的位置
      var item2 = []
      // 循环a拿到页面中首列的文字,添加在item1里
      a.forEach(function (item,index) {
   
        item1.push(item.innerText)
      })
      // item1去重(可以得到页面首列有几种不一样的字符类型名) 并转换成数组
      var arr = Array.from(new Set(item1))
      // 检索独特字符类型名所在的页面的第几行,存在item2中
      arr.forEach(function (item,index) {
   
        item2.push(item1.indexOf(item))
      })
      // 移除第一列
     aoe.forEach(function (item,index) {
   
       item.children[0].remove()
     })
     // 创造新的第一列渲染在对应位置
     arr.forEach(function (item,index) {
   
       var td = document.createElement('td')
       td.innerText = arr[index]
       td.colSpan = 2
       
       if (index === arr.length - 1) {
   
         td.rowSpan = a.length - 1 -item2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值