2015-02-10 2 views
1

Как я могу динамически развернуть мой массив объектов? Позволь мне объяснить. Скажем, у меня есть этот массив объектов с подмассивами:Динамически сверлить вложенный массив объектов

var arrOfObjects = [ 

    { 
     name: 'something', 
     subArray: [ { 
      name: 'nested something' 
     } ] 
    }, 
    { 
     name: 'something else', 
     subArray: [ { 
      name: 'nested something else' 
     } ] 
    }]; 

и ссылка, чтобы знать, какой массив в иерархии мне нужно изменить

var referenceArr = [1,0]; 

Как использовать эту ссылку, чтобы создать правильное место в мой массив данных, в этом случае, я хотел бы, чтобы добраться до

arrOfObject[1]['subArray][0]['name']; 
// 'subArray' and 'name' are always the same 

ссылка на массив может быть любой длины, так

var referenceArr= [0]; 

указывает модифицирование:

arrOfObject[0]['name']; 

ответ

0

Попробуйте Проверить эту jsfiddle

var arrOfObjects = [ 

    { 
     name: 'something', 
     subArray: [ { 
      name: 'nested something' 
     } ] 
    }, 
    { 
     name: 'something else', 
     subArray: [ { 
      name: 'nested something else' 
     } ] 
    }]; 

for(var i=0; i<arrOfObjects.length;i++){ 
    alert(arrOfObjects[i].subArray[0].name) 
} 
2

Используйте эту функцию:

function getValue(source, path){ 
    var result = source; 
    while(path.length){ 
     result = result[path.shift()]; 
     if(path.length && !result.subArray) 
      throw new Error('Incorrect path!'); 
     else if(path.length) 
      result = result.subArray; 
     else 
      result = result.name; 
    } 
    return result; 
} 

fiddle

Смежные вопросы