JavaScript

Какую структуру данных вы используете в разработке js приложений? Дерево? или Множество объектов? пояснение внутри

Стоит ли использовать объект, в котором много других объектов, в котором еще куча дочерних объектов? или просто организовать данные по разным объектам и через ID как в базе данных их выбирать?

Пример: у меня есть - бренд авто, марка, владелец.

Организовать будет лучше через вложенные объекты?
brand = {
marks:{
r7:{
name:'anton'
}
}
}

или создать несколько массивов, в которых будут idшники через которые приложение будет перебирать массивы и понимать кто к чему относится?
brands =[{id:1, brand:'bmw'}];
marks =[{id:1, marka:'R7'}];
owner =[{id:1, name:'Антон''}];

Как вы делаете? и как лучше?
Все зависит от приложения - точнее, и от общего алгоритма, и от манипуляций с данными в частности.
Например, в одностраничнике с единственной общей "функцией" и без обмена данными с внешним кодом (например, оффлайновый поиск в статичном справочнике), может быть оправдан подход одного большого дерева, так как не нужно решать задачи изменения-связывания данных, и ригидность структуры не мешает. А в комплексном приложении, построенном в соответствии с принципами SOLID, и работающим с несколькими апи, где данные "живые и подвижные" - целесообразнее разделить их по логически независимым компонентам.
‎
В твоем случае, прежде всего необходимо определиться, что именно является "основной" сущностью. Скорее всего, это будет "владелец авто" - а значит, разумно сделать отдельно коллекцию экземпляров этого объекта + и отдельно справочник автомобилей (коллекцию экземпляров "автомобиль").
Нужно ли дробить сущность автомобиля на массивы "брэнд" и "модель", вынося из свойств экземпляра - зависит от того, какая работа планируется со справочником. Скажем, если он будет редактироваться юзером, и храниться в mongoDB или Firebase RD, то смысл определенно есть: так можно значительно упростить код, а также сократить объемы передаваемых по сети данных, снизить нагрузку, и немного повысить скорость работы приложения. Но и в этом случае, совсем не нужно объявлять переменные для этих массивов - храни их в объекте справочника. Будет этот объект массивом, или же основан на классе с инкапсуляцией - зависит только от тебя, от того какой будет архитектура приложения.
‎
Короче, если бы на этот вопрос был единственный универсальный ответ, то не было бы разработчиков ПО))
Хайрола Ыскак
Хайрола Ыскак
68 166
Лучший ответ