如何动态导航javascript多维数组

How to navigate javascript multidimenion array dynamically?

本文关键字:javascript 数组 导航 何动态 动态      更新时间:2023-09-26

我有两个数组,如下所示:

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这样的方式做是行不通的。

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

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);

您可以使用brakets ([])dot (.)符号来访问对象属性:

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

阅读此

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

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