2013-11-11 2 views
1

У меня есть объект, который содержит под-объекты как дочерние. мне нужно, чтобы преобразовать его в массив:Javascript конвертировать объект с дочерними объектами в массив

var myObj = { 
    a: 5, 
    b: 6, 
    c: { 
     a: { 
      a: { 
       a: 7 
      } 
     } 
    }, 
    d: { 
     a: { 
      a: 8, 
      b: 9, 
      c: { 
       a: 10 
      } 
     }, 
     b: 11 
    } 
} 

так:

myArray = [ 
    a: 5, 
    b: 6, 
    c: [ 
     a: [ 
     a: [ 
      a: 7 
     ] 
     ] 
    ], 
    d: [ 
     a: [ 
     a: 8, 
     b: 9, 
     c: [ 
      a: 10 
     ] 
     ], 
     b: 11 
    ] 
    ]; 

Что является лучшим способом для достижения этой цели?

+3

В то время как массивы могут иметь свойства (они все-таки объекты), зачем вам это делать? И если вы хотите это сделать, подсказка: Рекурсия – Joseph

+1

массивы могут иметь только цифровые клавиши; ваш желаемый «массив» невозможен в javascript – jbabey

+0

Зачем вам это нужно? Звучит как классическая проблема XY http://meta.stackexchange.com/a/66378/162238 –

ответ

5

Как уже упоминалось в ваших комментариях, похоже, что у вас есть проблема XY. Вы хотите, X, но обратиться к нам за Y вместо думая, что это поможет, но на самом деле Y гораздо сложнее решить, чем X.

Есть два способа доступа к свойствам объекта в JavaScript:

  • obj.prop
  • obj['prop']

разница между этими двумя способами доступа является то, что второй является более универсальным, вы можете использовать некоторые ограниченные ключевые слова как имена свойств, вы можете использовать переменные для доступа к значениям и т.д.

Чтобы получить доступ к вложенной собственности вы можете сделать (любой вариант отлично):

  • myObj.c.a.a.a
  • myObj['c']['a']['a']['a']

Вы даже можете смешивать их: myObj.c['a'].a['a'], хотя это, вероятно, более запутанной , поэтому вам следует избегать этого.

Массивы в JS также являются объектами, которые обладают некоторой функциональностью, которая имеет свойства с числовыми именами. Кажется, вам не нужна какая-либо из этих функций, поэтому вам, вероятно, не нужен массив.

+0

Спасибо @ Тибос, теперь это ясно для меня. – zur4ik

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