开发过程中遇到需要table的单元格的需求,类似效果如下:
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
}