2012-11-23 27 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的财产的名称。

相关问题