vue

 //设置单元格
        setrowspans() {
            // 先给所有的数据都加一个v.rowspan = 1
            this.list.forEach((item) => {
                item.rowspan = 1;
            });
            // 双层循环
            for (let i = 0; i < this.list.length; i++) {
                // 内层循环,上面已经给所有的行都加了item.rowspan = 1
                // 这里进行判断
                // 如果当前行的cid和下一行的cid相等
                // 就把当前item.rowspan + 1
                // 下一行的item.rowspan - 1
                for (let j = i + 1; j < this.list.length; j++) {
                    //此处可根据相同字段进行合并,此处是根据的id
                    if (this.list[i].cid === this.list[j].cid) {
                        this.list[i].rowspan++;
                        this.list[j].rowspan--;
                    }
                }
                // 这里跳过已经重复的数据
                i = i + this.list[i].rowspan - 1;
            }
        },
//合并单元格
        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
//第一列
            if (columnIndex === 0) {
                return {
                    rowspan: row.rowspan,
                    colspan: 1,
                };
            }
//第二列
            if (columnIndex === 1) {
                return {
                    rowspan: row.rowspan,
                    colspan: 1,
                };
            }
        },

原文地址:https://www.cnblogs.com/gggggggxin/p/14311726.html