合併相鄰行內容相同的單元格。html
rowspan指定單元格縱向跨越的行數。如rowspan被設爲3,這表示該單元格必須跨越三行(自己一行,加上另外兩行)框架
/** * 單元格合併方法,增長rowspan屬性 * @param data 要處理的數據 * @param nameList 合併的字段list */ function rowspanFun(data, nameList) { for (var i = 0; i < nameList.length; i++) { var name = nameList[i]; var startRow = 0; var endRow = data.length; var mergeNum = 1; if (endRow != 1) { for (var j = startRow; j < endRow; j++) { if (j == endRow - 1) { //判斷是不是最後一個元素 if (startRow == endRow - 1) { data[j][name + 'Rowspan'] = 1; } } else { if (data[startRow][name] == data[j + 1][name]) { data[j + 1][name + 'Rowspan'] = 0; mergeNum = mergeNum + 1; data[startRow][name + 'Rowspan'] =mergeNum; } else { startRow = j + 1; if (mergeNum > 1) { data[startRow][name + 'Rowspan'] = 1; } else { data[j][name + 'Rowspan'] = 1; } mergeNum = 1; } } } } else { data[0][name + 'Rowspan'] = 1; } } return data; }
var data = [ {name: 'dwj', sex: '女', age: 20}, {name: 'dwj', sex: '男', age: 20}, {name: 'dwq', sex: '女', age: 20}, {name: 'other', sex: '女', age: 20} ]; rowspanFun(data, ['name', 'sex']);
調用方法後的數據處理結果spa
<table> <tr *ngFor="let item of data"> <td *ngIf="item.nameRowspan != 0" [attr.rowspan]='item.nameRowspan'>{{item.name}}</td> <td *ngIf="item.sexRowspan != 0" [attr.rowspan]='item.sexRowspan'>{{item.sex}}</td> <td>{{item.age}}</td> </tr> </table>
注意:此html代碼使用的是ng語法,請根據自已使用的js框架自行調整。code