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

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

      // 页面中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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp 中可以使用 `uni-list` 组件实现表格的展示,但是目前 `uni-list` 组件并不支持合并单元格。你可以考虑使用自定义组件或者第三方插件来实现表格的合并单元格功能。 其中,自定义组件需要手动实现合并单元格算法和样式,比较麻烦;而第三方插件则可以直接使用已经封装好的组件,如 `uni-simple-table` 组件,该组件可以实现表格的合并单元格功能。 使用 `uni-simple-table` 组件的步骤如下: 1. 安装 `uni-simple-table` 组件 ``` npm install @dcloudio/uni-ui --save ``` 2. 在页面中引入组件 ```html <template> <view> <uni-simple-table :columns="columns" :data="data"></uni-simple-table> </view> </template> <script> import uniSimpleTable from '@dcloudio/uni-ui/lib/uni-simple-table/uni-simple-table.vue' export default { components: { uniSimpleTable }, data() { return { columns: [ { title: '姓名', key: 'name' }, { title: '性别', key: 'gender' }, { title: '年龄', key: 'age' }, ], data: [ { name: '张三', gender: '男', age: 22 }, { name: '李四', gender: '女', age: 21 }, { name: '王五', gender: '男', age: 23 }, ] } } } </script> ``` 3. 在 `columns` 中设置需要合并单元格的 `rowspan` 和 `colspan` 属性,示例代码如下: ```js columns: [ { title: '姓名', key: 'name', rowspan: 2 }, { title: '性别', key: 'gender', rowspan: 2 }, { title: '年龄', key: 'age', colspan: 2 }, { title: '工作', key: 'job', colspan: 2 }, ], ``` 在上述示例代码中,设置了姓名和性别单元格需要合并两行,年龄和工作单元格需要合并两列。 需要注意的是,`uni-simple-table` 组件中的 `columns` 和 `data` 属性的使用方法与 `uni-list` 组件略有不同,具体使用方法可以参考官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值