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;
};

转载于:https://www.cnblogs.com/sdfczyx/p/7099103.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值