html的table转化为二维数组 (考虑rowspan和colspan)

 

/**
* Table -> Two-dimension array 
* @param {*} value
*/
const get2DArrayByTable = ($, $trs) => {

 

let trlength = $trs.length;

 

let arr = [];
for (let i = 0; i < trlength; i++) {
arr[i] = [];
}

 

$trs.each(function(trindex, tritem) {

 

$(tritem).children('th').each(function(thindex, thitem) {

 

let rowspanCount = $(thitem).attr('rowspan');
let colspanCount = $(thitem).attr('colspan');
let value = $(thitem).text();
let colIndex = thindex;
while (arr[trindex][colIndex] !== undefined) {
colIndex++;
}
if (rowspanCount > 1 && colspanCount > 1) {
for (let i = 0; i < rowspanCount; i++) {
for (let j = 0; j < colspanCount; j++) {
arr[trindex + i][colIndex + j] = value;
}
}
} else if (rowspanCount > 1) {
for (let i = 0; i < rowspanCount; i++) {
//个别对应  rowspan定义错误的话,超过最大行数直接忽略。
if (trindex + i > arr.length - 1) {
break;
}

 

arr[trindex + i][colIndex] = value;
}

 

} else if (colspanCount > 1) {
for (let i = 0; i < colspanCount; i++) {
arr[trindex][colIndex + i] = value;
}

 

} else {
arr[trindex][colIndex] = value;
}

 

});

 

$(tritem).children('td').each(function(tdindex, tditem) {



let rowspanCount = $(tditem).attr('rowspan');
let colspanCount = $(tditem).attr('colspan');

 

let value = $(tditem).text();

 

let colIndex = tdindex;
while (arr[trindex][colIndex] !== undefined) {
colIndex++;
}
if (rowspanCount > 1 && colspanCount > 1) {
for (let i = 0; i < rowspanCount; i++) {
for (let j = 0; j < colspanCount; j++) {
arr[trindex + i][colIndex + j] = value;
}
}
} else if (rowspanCount > 1) {
for (let i = 0; i < rowspanCount; i++) {
//个别对应  rowspan定义错误的话,超过最大行数直接忽略。
if (trindex + i > arr.length - 1) {
break;
}
arr[trindex + i][colIndex] = value;
}

 

} else if (colspanCount > 1) {
for (let i = 0; i < colspanCount; i++) {
arr[trindex][colIndex + i] = value;
}

 

} else {
arr[trindex][colIndex] = value;
}

 

});



});

 

return arr;
};
posted on 2017-06-30 15:33  sdfczyx  阅读(472)  评论(0编辑  收藏  举报