Получить объект массива в первом слое javascript массива вложенных объектов - PullRequest
1 голос
/ 08 мая 2019

Я хочу просмотреть вложенный массив объектов, и если условие выполнено, я хочу вернуть объект первого слоя, в котором находится найденный объект.

Как мне этого добиться?

Моя попытка:

getLayoutByTableId(tableId: number) {
   return this.layouts.map(function(layout) {
     return layout.tables.filter(function (table) {
       if (table.id === tableId) {
         return layout;
       }
     });
   })
};

Возвращает объект таблицы, в котором выполняется условие.

Массив вложенных объектов:

[  
   {  
      "id":31,
      "stationId":31,
      "tables":[  
         {  
            "id":652,
            "number":"040",
            "x":1285,
            "y":527,
            "length":98,
            "breadth":69,
            "rotation":0,
            "shape":"rectangle",
            "translateX":0,
            "translateY":0,
            "masterId":null,
            "seats":4,
            "groupingActive":false
         },
         { ...
         }
      ]
   },
   { ...
   }
]

1 Ответ

2 голосов
/ 08 мая 2019

Вы можете использовать Array.prototype.find и Array.prototype.some , чтобы сделать это с существующими библиотечными функциями:

const data = [{id:31,stationId:31,tables:[{id:652,number:"040",x:1285,y:527,length:98,breadth:69,rotation:0,shape:"rectangle",translateX:0,translateY:0,masterId:null,seats:4,groupingActive:false},{}]},{}];

const getLayout = id => data.find(l => l && l.tables && l.tables.some(t => t.id === id));

console.log(getLayout(652));
console.log(getLayout(1111));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...