Показать сообщение отдельно
  #1 (permalink)  
Старый 06.04.2020, 19:08
Интересующийся
Отправить личное сообщение для shurikkan Посмотреть профиль Найти все сообщения от shurikkan
 
Регистрация: 03.05.2014
Сообщений: 21

Сборка объекта из массивов [без Map()]
Привет всем.

Собираю объект для отображения в DOM из массивов с объектами.
В каждом массиве содержатся специфические свойства для, в качестве ключа - object_id.

Пример массивов:
info: [
    { id: 26, name: "CWVA", group: "EA211" }
    { id: 90, name: "CWVB", group: "EA211" }
]
sensors: [
    { id: 1, object_id: 19, name: tempOil, value: 115 }
    { id: 3, object_id: 90, name: tempOut, value: 9 }
    { id: 2, object_id: 26, name: tempOil, value: 90 }
    ...
]
props: [
    { id: 1, object_id: 26, status: off, RpM: 0 }
    { id: 2, object_id: 90, status: on, RpM: 1208 }
    ...
]


На выходе мне нужен объект, вида:
myObject {
    id: 26,
    name: "CWVA",
    group: "EA211",
    sensors: [
        tempOil: 90,
        ...
    ],
    props: {
        status: off, 
        RpM: 0
    }
}


Сейчас я пропускаю через for of все массивы и беру из них элемент с нужным object_id. Проблема в том, что кол-во объектов растёт, а массивы со свойствами для обновления таких объектов прилетают всё чаще.

Думал перейти на Map(), но такой возможности нет (VueJS не поддерживает рендеринг DOM через директиву v-for с параметром в виде объекта Map, только простые массивы/объекты).

Может кто подскажет как можно оптимизировать код? Можно ли избавиться от циклов, не перебирать постоянно каждый??

Заранее спасибо за ответы!

P.S.: Не очень хочется связываться с промисами в данном контексте, т.к., на сколько я понимаю, может быть переполнение стека...

Последний раз редактировалось shurikkan, 06.04.2020 в 19:19.
Ответить с цитированием