使用具有可变属性的js对象参数

时间:2012-11-23 12:03:37

标签: javascript arrays arrayobject

我有以下数组。

[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正在运作。但是,当我使用关键字或Google作为变量时,它不起作用。

请帮帮我。我该怎么做?

2 个答案:

答案 0 :(得分:0)

您正在寻找的是用字符串括起来的符号:

brands[x]["keyword"]

在JavaScript中,您可以通过两种方式访问​​对象属性(这些属性):

  1. 使用点表示法和文字属性名称,例如foo.property

  2. 使用括号表示法和字符串属性名称,例如foo["property"]

    在第二种情况下,字符串不必是文字字符串,它可以是任何表达式的结果 - 包括变量引用。所以:

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

答案 1 :(得分:0)

你需要:

brands[x][headers[y]];

即。您使用密钥brand获取x,然后使用密钥header查找y,然后使用 名称作为变量名称brand

的属性