Relacje w obiektach. Używanie kolekcji?

0

Cześć, mam pewien problem. otoz mam trzy obiekty i chcialbym zrobic relacje między nimi, to znaczy po kluczach dostawać wartości z jednego obiektu, wykorzystując klucz drugi.

Generalnie zadanie trywialne, petle po jednym złapać klucz, przefiltrowac ewentualnie jakąś pętla w pętli. I to jest właśnie to co chce uniknąć. Chciałbym używać do tego jakiegoś mechanizmu kolekcji, który będzie schludniejszy niż robienie tych pętli i ifow.

Wykonanie tego chciałbym uzyskać w jsie. Nigdy szczerze mówiąc nie widziałem czegoś takiego ale w tym przypadku bardzo by mi to pomogło w zadbaniu o kod.

0

Weź może daj jakiś przykład tych trzech obiektów i spodziewany output bo nie bardzo wiem co chcesz zrobić po tym opisie.

0

Oto przyklad:

 

const mailers = [
 {code:1,response:200,mail:'to:abc'},
 {code:1,response:220,mail:'to:cba'},
 {code:2,response:200,mail:'to:cab'}
]

const data = {
 'codes':[
   {code:1,info:'xyz'},
   {code:2,info:'zyx'}
 ],
 'responses':[
   {response:200,info:'abc'},
   {response:220,info:'bbc'}
  ] 
/* teraz np. dla codes->code:1 mamy dostepne obiekty z mailers :  
    {code:1,response:200,mail:'to:abc'},
    {code:1,response:220,mail:'to:cba'}

 a nastepnie z powyszych przefiltrowanych obiektow mozemy sie polaczyc np. z responses->response:220 i w rezultacie mamy obiekt koncowy  
  {code:1,response:220,mail:'to:cba'}
*/
}

Generalnie rozwiazanie jest banalnie proste, ale chcialbym uzyskac jak najlepsze rozwiazanie, bez petli w petli i ifow. Widzialem cos takiego jak _lodash ale nie wiem czy to dobre rozwiazanie do tego

0

Coś w tym stylu?

const dataCodesMailers = data.codes.map(codesItem =>
  mailers.filter(mailer => mailer.code === codesItem.code)
);
0

Problem W tym że nie ma połączenia z responses. I teraz od wyniki tego byłoby trzeba zrobić kolejne mapowanie po responses. Czyli dwa razy pętlę map. A cjcialbyn tego uniknąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1