2012-06-24 30 views
3

我想從一個簡單的對象數組渲染一個表。但不是簡單地爲每個對象渲染一行,我想在每一行渲染三個對象。使用Jade/Express.js渲染每行有多個元素的表

<table> 
    <thead>...</thead> 
    <tbody> 
    <tr> 
     <td>obj0</td> 
     <td>obj1</td> 
     <td>obj2</td> 
    </tr> 
    <tr> 
     <td>obj3</td> 
     <td>obj4</td> 
     <td>obj5</td> 
    </tr> 
    ... 
    </tbody> 
</table 

回答

5
objects = [[obj0, obj1, obj2], [obj3, obj4, obj5]] 

table 
    thead 
    tbody 
    for object in objects 
    tr 
     for subobject in object 
     td= subobject 
+2

謝謝。我沒有想到在構建表循環之前重新組織這些對象。 –

6

接受的答案技術上的工作,但我不喜歡,你必須構建數據,這樣邏輯的作品。我認爲邏輯應該適應數據。因此,我想出了這個:

objects = [obj0, obj1, obj2, obj3, obj4, obj5] 

table 
    thead 
    tbody 
    - var columns = 3 
    - for (var i = 0; i < objects.length; i=i+columns) 
     tr 
     - for (var j = 0; j < columns && i+j < objects.length; j++) 
      td=objects[i+j] 
+0

回想一下,如果你使用類似[lodash's'chunk'](https://lodash.com/docs/4.17.4#chunk)的東西,你可以在這個答案和被接受的答案之間實現兩全其美。您可以通過動態重新排序數據來使用更具可讀性的方法(但是,這是假設您的列表很小;您會爲大塊列表的大塊支付性能損失) – rkoval