Как получить доступ к целому объекту по его идентификатору - PullRequest
0 голосов
/ 07 февраля 2019

Здесь у нас есть два JSON, называемые 1.contacts и 2.workers контакты, для которых у json есть идентификатор, называемый serviceId , это не что иное, как id работников .когда я пытаюсь отобразить контакты, я хочу отображать работников, имеющих отношение к этим контактам.Вот стэкиблиты ДЕМО

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Здесь я обновил stackblitz, используя пример ваших данных в виде массива.

https://stackblitz.com/edit/angular-movie-read-load-json-sample-eg-ujzzx1

Код: -

let finalResult:any[]=[];
    for(let contact of this.contacts){
      if(contact.serviceId){
        finalResult.push(this.workers.filter(o=>o.id == contact.serviceId));
      }
    }

    console.log("finalResult",finalResult);
0 голосов
/ 07 февраля 2019

Вы можете собрать идентификаторы из идентификаторов контактов на карте, используя map, а затем reduce.После этого вы перебираете своих рабочих и проверяете в ранее сгенерированной карте, является ли их serviceId одним из ключей карты.

Это выглядит так

const contacts = [{
    "name": "Jhon Doe",
    "gender": "Male",
    "serviceId":  "e39f9302-77b3-4c52-a858-adb67651ce86",
  },
  {
    "name": "Peter Parker",
    "gender": "Male",
    "serviceId":  "e39f9302-77b3-4c52-a858-adb67651ce86",
  },
  {
    "name": "Mark Wood",
    "gender": "Male",
       "serviceId":  "38688c41-8fda-41d7-b0f5-c37dce3f5374",
  },
  {
    "name": "Mary Jane",
    "gender": "Female",
    "serviceId":  "38688c41-8fda-41d7-b0f5-c37dce3f5374",
  }
];

const workers = [
    {
        "id": "e39f9302-77b3-4c52-a858-adb67651ce86",
        "name": "Alfy Odhams"
    },
    {
        "id": "38688c41-8fda-41d7-b0f5-c37dce3f5374",
        "name": "Allsun Suttle"
    },
    {
        "id": "ed780d15-428b-4bcd-8a91-bacae8b0b72e",
        "name": "Alvinia Ettritch"
    },
    {
        "id": "40665c50-ff74-4e81-b968-e127bdf1fe28",
        "name": "Ambrosi Lindenstrauss"
    }
];

const contactsIDs = contacts.map(c => c.serviceId).reduce((acc, curr) => {
  acc[curr] = true;
  return acc;
}, {});

const filteredWorkers = workers.filter(w => w.id in contactsIDs);
console.log(filteredWorkers);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...