Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

222
Visualizações
El operador Javascript React Return Spread no funciona

Tengo la consulta graphQL con el siguiente esquema:

 export const ALL_BOOKS = gql` query { allBooks { title published author { name born } id genres } }

He pasado este resultado a un componente de reacción a través de accesorios. Estoy tratando de obtener los géneros de cada libro y almacenarlos en una matriz de una sola dimensión. Para mí, tiene mucho sentido escribir:

 let genres = props.books.map(book => (...book.genres))

¿Por qué este código no funciona? ¿Qué tiene de malo devolver un objeto con el operador de propagación y qué alternativa cree que funcionaría para devolver libros>libro>géneros>género en una sola matriz? Realmente quiero evitar la cosa anidada por bucle.

¡Gracias!

La estructura de entrada es así:

 0: {__typename: 'Book', title: 'Book1', published: 2022, author: {…}, id: '61d5e02beef9d5fcdb5ce26b', …} 1: {__typename: 'Book', title: 'Book2', published: 2022, author: {…}, id: '61d5e061eef9d5fcdb5ce270', …} 2: {__typename: 'Book', title: 'Book3', published: 2022, author: {…}, id: '61d5e07a3473e9ac212f87dc', …}

Tomado del registro de la consola

-- Con Stringfy

 [ { "__typename": "Book", "title": "The Key of Solomon", "published": 2022, "author": { "__typename": "Author", "name": "Steve Jobs", "born": 1999 }, "id": "61d5e02beef9d5fcdb5ce26b", "genres": [ "Philosophy", "Witchcraft" ] }, { "__typename": "Book", "title": "The Steez of Solomon", "published": 2022, "author": { "__typename": "Author", "name": "Horace Gumdrop", "born": 1998 }, "id": "61d5e061eef9d5fcdb5ce270", "genres": [ "Philosophy", "Steezcraft" ] }, { "__typename": "Book", "title": "The Steep", "published": 2022, "author": { "__typename": "Author", "name": "Bulhar", "born": null }, "id": "61d5e07a3473e9ac212f87dc", "genres": [ "Philosophy", "Steezcraft" ] }

]

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Bueno, debe agregar .flat() después de .map(...) .

O puede usar el método de reducción para acumular el resultado.

about 4 years ago · Juan Pablo Isaza Relatório

0

Prueba esto

 let genres = props.books.map(book => ({...book.genres}))
about 4 years ago · Juan Pablo Isaza Relatório

0

De su pregunta, parece que solo quiere devolver los géneros:

 let genres = props.books.map(book => book.genres)

Esto devolverá una matriz con los géneros extraídos de los books .

Edición posterior: su pregunta no estaba clara, pero probablemente desee obtener la lista completa de géneros de cada sublista de géneros Y eliminar los duplicados:

 let genres = props.books.map(book => book.genres).flat().reduce((arr, elem) => { if(arr.indexOf(elem) === -1) { arr.push(elem); } return arr; }, []);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda