es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Filtrar un arreglo de objetos dentro de un arreglo de objetos.

Tengo una aplicación MERN y obtengo todos los álbumes a través de axios.

La estructura es la siguiente:

[
 {
  title: "",
  artist: "",
  reviews: [
   {
     username: "",
     comment: "",
   },
   {
     username: "",
     comment: "",
   },
  ]
 },
 {
  title: "",
  artist: "",
  reviews: []
 },
]

Necesito filtrar cada objeto de revisión (review.object) que tenga un nombre de usuario específico dentro, por ejemplo, PERO devolver el objeto que tenga esa matriz de revisión dentro.

Si el index[3] res.data -> reviews -> object tiene un nombre de usuario,
devolver ese objeto res.data. Intenté con un filtro dentro de otro filtro, pero no funcionó.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para filtrar cada objeto de revisión que contiene un nombre de usuario específico y devolver el objeto que tiene esa matriz de revisiones en su interior, puedes utilizar el método filter en la matriz res.data para filtrar los objetos que tienen una matriz reviews, y luego utilizar el método some en la matriz reviews para comprobar si alguna de las revisiones tiene el username deseado. Aquí tienes un ejemplo de cómo se puede hacer esto:

    const username = "ejemploNombreUsuario";
    
    const filteredData = res.data.filter((album) => {
      return album.reviews.length > 0 && album.reviews.some((review) => {
        return review.username === username;
      });
    });
    

    Esto devolverá una nueva matriz de objetos de res.data que tienen al menos una revisión con el username deseado. Si no se encuentran objetos, se devolverá una matriz vacía.

Comments are closed.