Estoy tratando de filtrar estas dos matrices de objetos por su id ( id & userId ).
Quiero devolver solo el título donde id y userId son iguales
Gracias !
const usersData = [ { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz", } ] const albumsData = [ { "userId": 1, "id": 1, "title": "FooBar" }, { "userId": 1, "id": 2, "title": "Trolololo" }, { "userId": 3, "id": 3, "title": "omnis laborum odio" }, { "userId": 4, "id": 4, "title": "non esse culpa molestiae omnis sed optio" } ] const results = usersData.map(({ id }) => albumsData.filter(({ userId }) => id === userId) ); console.log(results);Su código parece estar bien, pero devolverá una matriz anidada, así que solo use flatMap en lugar de map . Y si solo quiere el título, simplemente encadene otro .map a él:
const usersData = [{"id": 1,"name": "Leanne Graham","username": "Bret","email": "Sincere@april.biz",}]; const albumsData = [{"userId": 1,"id": 1,"title": "FooBar"},{"userId": 1,"id": 2,"title": "Trolololo"},{"userId": 3,"id": 3,"title": "omnis laborum odio"},{"userId": 4,"id": 4,"title": "non esse culpa molestiae omnis sed optio"}]; const results = usersData.flatMap(({ id }) => albumsData.filter(({ userId }) => id === userId) ).map(({title}) => title); console.log(results);const result = albumData.filter((data) => data.userId === usersData[0].id);
Como se ha señalado, obtendrá una matriz anidada usando map . Pero eso podría ser deseable si agrega otro elemento a la matriz de datos de usersData , ya que obtendrá los resultados agrupados por índice. Si no, use flatMap con otro map al final para obtener el título.
const results = usersData.flatMap(({ id }) => albumsData.filter(({ userId }) => id === userId) ).map(entry=>entry.title)Rendimientos:
["FooBar","Trolololo"]