2014-10-01 3 views
1

У меня есть 2 массивы, которые выглядят следующим образом:Как перемещаться по массиву многомерных изображений javascript динамически?

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, который не работает.

ответ

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

+0

Бинго! Он работает. Большое вам спасибо. – mzereba

+0

добро пожаловать. –

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); 
    } 
} 
Смежные вопросы