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