计算各个列的合并数据,得到该数据后,再结合具体的前端框架调用进行合并。
/**
* 计算合并行
* @param rows
*/
function calculateMergeCells(rows) {
if (rows.length == 0) return;
//初始化合并原始数据
var initData = JSON.parse(JSON.stringify(rows[0]))
for (var key in initData)
initData[key] = [{ index: 0, value: initData[key], merge: 0 }];
//计算各个字段连续相同数据连续数量
for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) {
var row = rows[rowIndex];
for (var key in initData) {
var compareData = initData[key][initData[key].length - 1];
if (compareData.value != row[key]) {
compareData.merge = rowIndex - compareData.index;
initData[key].push({ index: rowIndex, value: row[key], merge: 0 })
}
}
}
//计算最后面的合并数量
for (var key in initData) {
var compareData = initData[key][initData[key].length - 1];
compareData.merge = rows.length - compareData.index
}
return initData;
}