0

我有以下数组。

[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]。谷歌是工作。但是当我使用关键字或谷歌作为变量时,它不起作用。

请帮我。我该怎么做?

4

2 回答 2

0

您正在寻找的是带有字符串的括号表示法:

brands[x]["keyword"]

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

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

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

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

    var k = "keyword";
    var value = brands[x][k];
    
于 2012-11-23T12:06:13.570 回答
0

你需要:

brands[x][headers[y]];

即,您使用brandwith 键x,然后查找headerwith 键y,然后将该名称用作brand.

于 2012-11-23T12:06:58.103 回答