169 похожих чатов

Всем привет. Нужен совет. Есть json, который приходит с сервера,

у него вложенность более 5 уровней вглубь. Чтобы добраться допустим до 5 уровня, мне необходимо запускать несколько вложенных циклов. Я знаю, что это плохо для производительности, O(n^5) и т.д. Есть ли какая-то альтернатива, как это можно оптимизировать? Создавать свои словари, Map'ы?

8 ответов

14 просмотров

А что тебе от него нужно?

Aleksandr- Автор вопроса
Светлана Чайка с Голубятни
А что тебе от него нужно?

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

Aleksandr
В одной функции мне надо получить значение с пятог...

Так там не будет О(n5), вроде как объекты на хэшах построены, так что доступ можно считать как О(1). Тебе ж ни в первой, ни во второй функции, не требуется выводить прям все поля объекта до 5 уровня…

Aleksandr- Автор вопроса
Светлана Чайка с Голубятни
Так там не будет О(n5), вроде как объекты на хэшах...

Да, все выводить не нужно. Но циклы же проходятся по всем значениям.

Aleksandr
Да, все выводить не нужно. Но циклы же проходятся ...

for (let key5 in obj?.[key1]?.[key2]?.[key3]?.[key4]) чем не устраивает? Обходить ты будешь только 5й уровень вложенности в таком случае

jabascripter
тру герл? похвально

Ну а вдруг криво придёт, сомневаюсь, что парень свою Json-ку обходит. Проще перестраховаться чем потом сидеть и «а чо а в смысле» Ещё проще конечно try{ const obj5lvl = obj[key1]…[key4]; … } catch(e) {console.warn(e)} и если ворнинг будет - идти есть мозг бэку

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта