1、获取合并行数组如:[2,0,1,3,0,0]
如何获取呢,我自己写了个方法
//获取合并行数组
getColumnArray( name){
let spanArray = new Array(this.tableData.length).fill(0);
// 从表格中获取字段作为数组
let arr = this.tableData.map(a => a[name]) ;
//去重
let lastArr = [...new Set(arr )];
//获取元素在数组中出现的次数和第一次出现的下标
for(let i in lastArr){
let index = arr.findIndex(item => item === lastArr[i])
let count = 0;
// two:
for(let j in arr){
if(lastArr[i] == arr[j]){
count++ ;
}else{
spanArray[index] = count == 0 ? 1 : count ;
// break two;
}
}
}
return spanArray ;
}
//合并单元格
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
const _row = this.getColumnArray('productName')[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
};
}
if(columnIndex === 1){
const _row = this.getColumnArray('productType')[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
};
}
}
注意:
该方法是可以实现合并行,但是给我留下疑惑,希望有大神看到,能指点指点:
1.当在数组中查询出现的次数时,break two; 语句,该语句我是想当出现不同时,就不继续往下查找了,跳出循环
但是该加上该语句时,count就不对了。
2.还有就是因为我们的表格查询的数据并不多,一页也就十来条数据,所以合并时可以在表格的函数里面遍历,如果有比较多的数据的话,还请把getColumnArray函数放在给表格赋值前遍历出来,不然表格有多少行数据它就会遍历多少次