2017-01-29 2 views
1

に格納する配列の各項目がすべての行を含む配列になるように2次元配列にテーブルを格納しようとしています。私が使用しているテーブルを2次元配列jquery

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] ] 

は私が間違ってやっているのか分かりません。助けてください。

答えて

0

これは2つの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>

0

あなたの問題は、外側のループの各反復のための新しい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>

内部 var tRow = [];を移動