我有两个看起来像这样的数组:
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
那样无法正常工作。
答案 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.value
和arrayBindings[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);
}
}