2012-11-23 108 views
0

我有以下數組。使用具有可變屬性的js對象參數

[searchEngineOrder] => Array 
     (
      [0] => keyword 
      [1] => Google 
      [2] => Yahoo 
      [3] => Bing/MSN 
     ) 

     [Datagrid] => Array 
     (
      [Brand] => Array 
       (     
        [1] => Array 
         (
          [keyword] => About Jetwing Hotels Sri Lanka 
          [Google] => 1 
          [Yahoo] => 1 
          [Bing/MSN] => 1 
         ) 

        [2] => Array 
         (
          [keyword] => Dining at Jetwing Kurulubedda 
          [Google] => 1 
          [Yahoo] => 1 
          [Bing/MSN] => 1 
         ) 
      )  ) 

這是php數組。 (我使用json編碼)

現在我想創建表。我使用下面的代碼。

var headers = data.searchEngineOrder;

 var trs = '<tr><td>Brand</td></tr>'; 

     var brands = data.Datagrid.Brand; 

     for (x in brands) { 
      trs += '<tr>'; 
      for (y in headers) {      
       // trs += '<td>'+ brands[x].keyword +'</td>'; This is work    
       trs += '<td>'+ brands[x].headers[y] +'</td>'; //This is not work  
      } 
      trs += '</tr>'; 
     } 

     $('#keyword-table tbody').html(trs); 

如上面的代碼brands[x].keyword或品牌[x] .Google正在工作。但是,當我使用關鍵字或谷歌作爲變量,這是行不通的。

請幫幫我。我該怎麼做?

回答

0

什麼你要找的是括號內的符號與字符串:

brands[x]["keyword"] 

在JavaScript中,您可以通過兩種方式訪問​​對象屬性(這是這是什麼意思):

  1. 使用點符號和文字屬性名稱,例如foo.property

  2. 使用括號表示法和字符串屬性名稱,例如foo["property"]

    在這第二種情況下,字符串不一定是文字字符串,它可以是包括變量引用的任何表達式的結果  —。所以:

    var k = "keyword"; 
    var value = brands[x][k]; 
    
0

您需要:

brands[x][headers[y]]; 

即你把brand與關鍵x,然後擡頭看header與關鍵y,然後用名作爲變量brand的財產的名稱。

相關問題