2013-05-08 88 views
0

我試圖通過過濾鍵來分離幾個對象。例如,我可能想要在第一個表格中輸出「yar」和「foo」對象的數據,其餘的則在第二個表格中輸出。單獨輸出多個JavaScript對象

這導致ONE完整表:

console.log(data); 
var firstTable = 'yar foo'.split(' '); 
for(var i = 0; i < data.length; i++) { 
    for(var key in data[i]) { 
     html = '<tr data-item="' + key + '"></tr>'; 
    } 
    $('table#one tbody').append(html); 
} 

結果我後:

<table> 
<tbody> 
    <tr data-item="yar"></tr> 
    <tr data-item="foo"></tr> 
</tbody> 
</table> 

<table> 
<tbody> 
    <tr data-item="bar"></tr> 
    <tr data-item="rawr"></tr> 
</tbody> 
</table> 

的console.log(數據)返回:

0: Object 
    foo: Object 
     lorem: Array[2] 
      0: "1" 
      1: "2" 
1: Object 
    bar: Object 
     lorem: Array[2] 
      0: "1" 
      1: "2" 
2: Object 
    yar: Object 
     lorem: Array[2] 
      0: "1" 
      1: "2" 
3: Object 
    rawr: Object 
     lorem: Array[2] 
      0: "1" 
      1: "2" 

我已經嘗試將key$.inArray(key, firstTable)匹配,但是第一個for循環讓我結束了太多的行。很高興能獲得任何幫助!

+1

您的數據非常符合您的要求。真實數據的標準是什麼?數據中只有每個第二行或特殊鍵? – DrColossos 2013-05-08 13:28:07

+0

@DrColossos第一個表應該匹配'firstTable'中定義的鍵,第二個表應該輸出所有其他表。 – estrar 2013-05-08 13:30:10

+0

工作jsfiddle會幫助 – epascarello 2013-05-08 13:33:48

回答

1

追加行各自的表一在-A-時間,記住inArray不返回true或false - 它返回的項目的索引(0到n)數組中,如果該項目不在那裏,則爲-1。

for(var i = 0; i < data.length; i++) { 
    for(var key in data[i]) { 
     html = '<tr data-item="' + key + '"></tr>'; 

     if ($.inArray(key, firstTable) >= 0) 
      $('table#one tbody').append(html); 
     else 
      $('table#two tbody').append(html); 
    } 
} 
+0

當答案在裏面的時候,我正在想着盒子......像一個魅力一樣,感謝一羣@Paul Roub! – estrar 2013-05-08 13:54:37

0

這只是一個猜測,但嘗試在循環中添加一箇中斷。

var firstTable = 'yar foo'.split(' '); 
for(var i = 0; i < data.length; i++) { 
    for(var key in data[i]) { 
     html = '<tr data-item="' + key + '"></tr>'; 
    } 
    break; 

然後你會輸出表格的其餘部分。

for(var i = 2; i < data.length; i++) { 
    for(var key in data[i]) { 
     html = '<tr data-item="' + key + '"></tr>'; 
    } 
// ...