Как перебрать Javascript Объект изнутри - PullRequest
0 голосов
/ 18 марта 2020

У меня есть следующий Javascript Объект, который я хотел бы перебрать из самых внутренних объектов, когда я выйду. Если внутренний объект представляет собой массив целых чисел и Javascript объектов, мы сначала go через Javascript Objects, затем целые числа.

Как я могу go об этом?

Спасибо всем заранее.

Мне бы хотелось, чтобы такой вид итераций был таким:

109 [107] -> 109 [1] -> 109 [0] -> [3] -> [6] -> ......

Объект Javascript:

[
    97,
    {
      '109': [ 
        98,  99, 
        '107': [ 100, 101, 102 ]
      ]
    },
    110,
    {'386': [103, 105, 106 ]},
    387,
    388,
    { '671': 104 },
    672
  ]

РЕДАКТИРОВАТЬ

Я имел в виду Javascript Объект, а не JSON Массив.

1 Ответ

1 голос
/ 18 марта 2020

Невозможно . В этой структуре данных нет ссылки снизу вверх; это означает, что элементы не хранят «родительскую» ссылку, чтобы вы могли выполнить итерацию в обратном направлении (например, существует только одна ссылка для доступа к [ 100, 101, 102 ], и это array[1]['109'][2]); следовательно, единственный способ - это go сверху вниз;

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


Представьте, что у вас есть массив "коробок" (подарочная коробка для разочарований), и каждая коробка может содержать или не содержать коробки меньшего размера, единственный способ понять, содержит ли коробка меньшую коробку или не развернуть родительскую коробку и посмотреть, что внутри нее. и то же самое для меньшей коробки внутри коробки внутри родителя, вы должны открывать ее, пока не дойдете до подарка.

теперь представьте, что у вас есть 10 подарочных коробок для разочарований, и вы не представляете, что внутри них, пока вы не открыли торговый центр; Вы развернули каждую коробку, все коробки теперь открыты, и вы точно знаете, сколько маленьких коробок в каждой коробке и где находятся подарки. вот интересная часть, теперь вы спрашиваете, как я мог получить доступ к подаркам в первую очередь, и не открывая сначала все коробки. Вы не можете, так как это не предназначено, чтобы быть достигнутым из самой внутренней коробки; Вы должны сделать это трудным путем и go, пока не найдете подарок. enter image description here


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

...