PROBLEM:

Mam tablicę obiektów. I currentObject, który obecnie przeglądam. Chcę uzyskać wartość z właściwości, która pochodzi z tablicy obiektów, jeśli 2 inne właściwości są zgodne.

Oto tablica, uproszczona:

ARRAY = [{
  id: 1,
  metadata: {author: "Company1"}
 },
 {
  id: 2,
  metadata: {author: "Company2"}
 }

Oto obiekt, uproszczony:

OBJECT = {
 name: "Something
 templateId: 2
}

Zasadniczo chcę więc zwrócić informacje metdata.author, jeśli ARRAY.id pasuje do OBJECT.templateId ..

Oto kod, który napisałem ...

const getAuthorInfo = (connTemplates: ARRAY[], currentConn: ITEM_OBJECT) => {
  connTemplates.find((connTemplate: ARRAY_ITEM_OBJECT) => connTemplate.id === currentConn.templateId);
};

console.log('Author Info:', connection); // This though returns the OBJECT, not the ARRAY_ITEM

Jakieś pomysły, jak to działa? Próbowałem też filter, z tym samym warunkiem, ale to zwróciło undefined, kiedy wywołałem to w moim ReactComponent.

0
user10104341 17 grudzień 2019, 12:54
Pod warunkiem, że return z getAuthorInfo otrzymasz przedmiot z ARRAY. Następnie użyj .metadata.author, aby uzyskać autora
 – 
Nick Parsons
17 grudzień 2019, 13:01
Zwraca obiekt. Nie obiekt z tablicy. Tak więc informacji tam nie ma.
 – 
user10104341
17 grudzień 2019, 13:08
Używasz .find() na connTemplates, który jest twoją tablicą. W zamian możesz uzyskać tylko undefined lub obiekt z tablicy, nie widzę, jak otrzymujesz OBJECT jako zwrot?
 – 
Nick Parsons
17 grudzień 2019, 13:19

2 odpowiedzi

Czy tego potrzebujesz?

const arr = [{
  id: 1,
  metadata: { author: "Company1" }
},
{
  id: 2,
  metadata: { author: "Company2" }
}]

const obj = {
  name: "Something",
  templateId: 2
}



function getAuthorInfo(arr, obj) {
  const arrItem = arr.find(item => item.id === obj.templateId)
  return arrItem.metadata.author
}

console.log(getAuthorInfo(arr, obj))
0
SakoBu 17 grudzień 2019, 13:08
Zwraca OBIEKT. Nie obiekt z tablicy. Więc informacji tam nie ma...
 – 
user10104341
17 grudzień 2019, 13:13

Jesteś na dobrej drodze:

const result = arr.find(f => f.id == obj.templateId).metadata.author;
    const arr = [{
      id: 1,
      metadata: {author: "Company1"}
     },
     {
      id: 2,
      metadata: {author: "Company2"}
     }]
    
     const obj = {
      name: "Something",
      templateId: 2
     }
    
    
    const result = arr.find(f => f.id == obj.templateId);
    
    console.log(result);
0
StepUp 17 grudzień 2019, 13:23
1
Myślę, że chce zagłębić się w obiekt i znaleźć prawdziwego autora...
 – 
SakoBu
17 grudzień 2019, 13:13
Chyba się myliłem... na podstawie odpowiedzi na moją odpowiedź... nie jestem pewien, czy rozumiem pytanie...
 – 
SakoBu
17 grudzień 2019, 13:16