table合并单元格的数据处理

204 阅读1分钟

开发过程中遇到需要table的单元格的需求,类似效果如下:

image.png function dealData(data) {

  let funCodeOut = []
  // 筛选出不重复的保单号,存到数组
  data.forEach((item) => {
    if (!funCodeOut.includes(item.funCodeOut)) {
      funCodeOut.push(item.funCodeOut)
    }
  })
  
  let fundNums = []
  // 将不重复的保单号数据的合并单元格设置为0,放到fundNums中
  funCodeOut.forEach((item) => {
    fundNums.push({ funCodeOut: item, num: 0 })
  })
  
  // 计算每个保单号所在的行需要合并的单元格数
  data.forEach((item) => {
    fundNums.forEach((e) => {
      if (item.funCodeOut === e.funCodeOut) {
        e.num++
      }
    })
  })
  //将计算后的合并单元格数整合到 data中
  data.forEach((e) => {
    fundNums.forEach((n) => {
      if (e.funCodeOut == n.funCodeOut) {
        if (funCodeOut.includes(e.funCodeOut)) {
          e.mergeCol = n.num
          //删除已经设置过的值(防止被合并的单元格进到这个 if 语句中)
          funCodeOut.splice(funCodeOut.indexOf(n.funCodeOut), 1)
        } else {
          //被合并的单元格设置为 0
          e.mergeCol = 0
        }
      }
    })
  })
  return data
}