如何动态导航javascript多维数组?

时间:2014-10-01 07:20:15

标签: javascript arrays json

我有两个看起来像这样的数组:

vars arrayVars = ["s", "p", "o"]

arrayBindings = [     {
        "s": { "type": "uri" , "value": "http://ss.ldm.io/" } ,
        "p": { "type": "uri" , "value": "http://xmlns.com/foaf/0.1/name" } ,
        "o": { "type": "literal" , "value": "ss" }
      } ,
      {
        "s": { "type": "uri" , "value": "http://ss.ldm.io/" } ,
        "p": { "type": "uri" , "value": "http://xmlns.com/foaf/0.1/img" } ,
        "o": { "type": "uri" , "value": "http://fbcdn-sphotos-d-a.akamaihd.net/o.jpg" }
      },
      ...
      ]

我希望能够根据第一个参数动态导航arrayBindings,基本上:

arrayBindings[0].s.value让我"http://ss.ldm.io/",但是像arrayBindings[0].arrayVars[0].value那样无法正常工作。

2 个答案:

答案 0 :(得分:1)

这就是[]符号派上用场的地方:

arrayBindings[0][arrayVars[0]].value

var arrayVars = ["s", "p", "o"]

var arrayBindings = [     {
        "s": { "type": "uri" , "value": "http://ss.ldm.io/" } ,
        "p": { "type": "uri" , "value": "http://xmlns.com/foaf/0.1/name" } ,
        "o": { "type": "literal" , "value": "ss" }
      } ,
      {
        "s": { "type": "uri" , "value": "http://ss.ldm.io/" } ,
        "p": { "type": "uri" , "value": "http://xmlns.com/foaf/0.1/img" } ,
        "o": { "type": "uri" , "value": "http://fbcdn-sphotos-d-a.akamaihd.net/o.jpg" }
      },
]
                     
document.write(arrayBindings[0][arrayVars[0]].value);

答案 1 :(得分:0)

您可以使用brakets ([])dot (.)表示法访问对象属性:

因此,arrayBindings[0].s.valuearrayBindings[0]['s']['value']返回相同的值http://ss.ldm.io/

<强> Read this

现在,动态地循环遍历两个数组:

for (i = 0; i < arrayBindings.length; i++) {
    for (j = 0; j < arrayVars.length; j++) {
        document.write(arrayBindings[i][arrayVars[j]].value);
    }
}