Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

166
Vistas
Filtrar matriz de diccionarios con matriz de diccionarios

Tengo dos conjuntos de diccionarios, ambos contienen una propiedad de ID, uno es 'id' y el otro es '_id'.

Estoy tratando de filtrar una matriz que contiene todos los libros disponibles y obtener datos de ella en función de los libros que tiene un usuario.

 const books = allbooks.filter(({ id }) => userBooks.findIndex((book) => book._id === id) )

Este es el código que estoy usando en este momento, pero no está haciendo lo que esperaba.

Cómo se ven los datos

 allbooks [ { id: 1, name: 'Book 1' }, { id: 2, name: 'Book 2' } ] userBooks [ { _id: 1 } ]

¿Debo crear una matriz a partir de los _ids de la segunda matriz y filtrar con eso? Estoy tratando de encontrar la mejor manera de hacer esto, estoy usando matrices de diccionarios y a veces me resulta difícil.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Eres tan cercano mi amigo. El problema es que Array.prototype.findIndex devuelve el primer índice en el que su función lambda devuelve verdadero. El índice del libro coincidente es el índice 0, que es falso , lo que hace que su filtro lo ignore porque el resultado de la función de filtro lambda es falso.

En su lugar, puede verificar si el resultado de su findIndex es> -1 ya que Array.prototype.findIndex devuelve -1 si no se encuentra el elemento.

 const allbooks = [ { id: 1, name: 'Book 1' }, { id: 2, name: 'Book 2' } ]; const userBooks = [ { _id: 1 } ]; const books = allbooks.filter(({ id }) => userBooks.findIndex((book) => book._id === id) > -1 ) console.log(books);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda