2014-03-13 95 views
1

我已經創建了一個將錶轉換爲JSON對象的應用程序,應用程序工作正常,但問題是空數組首先出現在正文鍵上。 誰能告訴我一些具有空數組的JSON對象 - Javascript

{"head":["Person Name","Person Name","Points","Price","Tax"],"body":[[],["Jill","Smith","50","150","41"],["Eve","Jackson","94","250","81"],["John","Doe","80","950","412"],["Adam","Johnson","67","750","941"]]} 

我的腳本如下

$('#convert-table').click(function() { 
    try{ 
var myTable = []; 
var myTr =[]; 
$('#example-table tr').each(function (i, tr) { 
    var myTd =[]; 
    $('th', tr).each(function(j, th) { 
      myTr.push($.trim(th.innerHTML)); 
    }); 

    $('td', tr).each(function(j, td) { 
     if(td.innerHTML.indexOf("span") != -1){ 
      var text = $(this).closest('td').find('span').text(); 
      myTd.push($.trim(text)); 
     } 
     else{ 
      myTd.push($.trim(td.innerHTML)); 
     } 
    }); 


    myTable.push(myTd); 
}); 

var headObj ={ 
    head:myTr, 
    body:myTable 
}; 

jsfiddle

回答

4

嘗試給使用條件來檢查,如果數組不爲空

更新:因爲對於第一個TR,你只有th而不是td,這就是爲什麼你的數組是空的。


例如

if(myTd.length > 0) 
     myTable.push(myTd); 
0

的問題是因爲在第一<tr>你只有<th>標籤,但你仍然推到myTable,因此,這就是空陣列的來源。

只有當你有實際的<td>才能推送到myTable

你可以通過檢查當前行沒有任何<tr>標籤,或檢查的myTr陣列已經被推到,說明你已經通過了排在它與<th>做到這一點。