在二维数组的jQuery Store表(Store table in 2d array jquery

2019-09-28 18:41发布

我试图存储表中的二维数组,这样的阵列中的每个项目将包含所有单元格成一排的阵列。

我正在使用:

var tRow = [];
var tRows = [];
tab = document.getElementById('table'); 

for(var r = 0 ; r < tab.rows.length ; r++) {
    for (var c=0; c < tab.rows[r].cells.length; c++){
        tRow[c] = tab.rows[r].cells[c].innerHTML;                       
    }

    tRows.push(tRow);
}

这只是给了我20个名额,而不是每个项目在表中的各指数中的最后一行项目。 因此,此表:

<tr> 
 <td>Row 1 cell 1</td>
 <td>Row 1 cell 2</td>
 <td>Row 1 cell 3</td>
 <td>Row 1 cell 4</td>
</tr>
<tr>
 <td>Row 2 cell 1</td>
 <td>Row 2 cell 2</td>
 <td>Row 2 cell 3</td>
 <td>Row 2 cell 4</td>
</tr>

tRows将是:

tRows =[ [Row 2 cell 1,Row 2 cell 2,Row 2 cell 3,Row 2 cell 4] , [Row 2 cell 1,Row 2 cell 2,Row 2 cell 3,Row 2 cell 4] ]

代替:

tRows =[ [Row 1 cell 1,Row 1 cell 2,Row 1 cell 3,Row 1 cell 4] , [Row 2 cell 1,Row 2 cell 2,Row 2 cell 3,Row 2 cell 4] ]

我不知道我做错了。 请帮忙。

Answer 1:

您可以有两个做这个map()函数。

 var tRows = $('tr').map(function() { return [$(this).find('td').map(function() { return $(this).text() }).get()] }).get() console.log(tRows) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <td>Row 1 cell 1</td> <td>Row 1 cell 2</td> <td>Row 1 cell 3</td> <td>Row 1 cell 4</td> </tr> <tr> <td>Row 2 cell 1</td> <td>Row 2 cell 2</td> <td>Row 2 cell 3</td> <td>Row 2 cell 4</td> </tr> </table> 



Answer 2:

你的问题是你需要一个新tRow为外循环的每个迭代阵列。

只是移动var tRow = []; 该行循环内

 var tRows = []; tab = document.getElementById('table'); for (var r = 0; r < tab.rows.length; r++) { var tRow = [];// start new row array for (var c = 0; c < tab.rows[r].cells.length; c++) { tRow[c] = tab.rows[r].cells[c].innerHTML; } tRows.push(tRow); } console.log(tRows); 
 <table id="table"> <tr> <td>Row 1 cell 1</td> <td>Row 1 cell 2</td> <td>Row 1 cell 3</td> <td>Row 1 cell 4</td> </tr> <tr> <td>Row 2 cell 1</td> <td>Row 2 cell 2</td> <td>Row 2 cell 3</td> <td>Row 2 cell 4</td> </tr> </table> 



文章来源: Store table in 2d array jquery