Tengo una aplicación mern y obtengo todos los álbumes a través de axios.
la estructura es como:
[ { title: "", artist: "", reviews: [ { username: "", comment: "", }, { username: "", comment: "", }, ] }, { title: "", artist: "", reviews: [] }, ]Necesito filtrar cada objeto de revisión que tenga un nombre de usuario específico dentro, por ejemplo, PERO devolver el objeto que tiene esa matriz de revisión dentro.
si el índice [3] res.data -> revisiones -> el objeto tiene un nombre de usuario, devuelve ese objeto res.data. Probé con el filtro dentro del filtro pero no funcionó.
Puede crear una función que obtenga el nombre de usuario, luego mapearla y filtrarla para que pueda mostrar solo los datos que necesita
Prueba esto
const datas = [ { title: "", artist: "", reviews: [ { username: "a", comment: "", }, { username: "b", comment: "", }, ] }, { title: "", artist: "", reviews: [] }, ] const filteredReviews = username => { return datas.map(data => { if (data.reviews.length > 0) { if (data.reviews.filter(review => review.username == username).length > 0) { return data } } return null }).filter(data => data) } por este ejemplo, devolví null dentro del mapa para aquellos objetos que no necesito, luego filtré la matriz por su elemento que tiene un valor
Luego puede obtener el objeto que necesita llamando a esa función como esta
console.log(filteredReviews('b'))