me podrias ayudar con estos problema
Necesito filtrar los elementos de la matriz que contiene ciertas actividades en su matriz de objetos. Aquí está el código:
let userArray = [{ name: "alonso", age:16, hobbies: [{activity:"videogames", id: 1}, {activity:"watch tv", id:2}] }, { name: "aaron", age:19, hobbies: [{activity:"videogames", id:1}, {activity:"soccer", id:8}] }, { name: "Luis", age:27, hobbies: [{activity:"code", id:3}, {activity:"soccer", id:8}] }] si se pasa "videogames" por cadena, la salida esperada es:
[{ name: "alonso", age:16, hobbies: [{activity:"videogames", id: 1}, {activity:"watch tv", id:2}] }, { name: "aaron", age:19, hobbies: [{activity:"videogames", id:1}, {activity:"soccer", id:8}] }]Puede usar Array.prototype.filter() combinado con Array.prototype.some() :
const userArray = [{name: 'alonso',age: 16,hobbies: [{ activity: 'videogames', id: 1 },{ activity: 'watch tv', id: 2 },],},{name: 'aaron',age: 19,hobbies: [{ activity: 'videogames', id: 1 },{ activity: 'soccer', id: 8 },],},{name: 'Luis',age: 27,hobbies: [{ activity: 'code', id: 3 },{ activity: 'soccer', id: 8 },],},] const getUsersByActivity = (array, activity) => array.filter( user => user.hobbies.some(hobby => activity === hobby.activity) ) const result = getUsersByActivity(userArray, 'videogames') console.log(result)var users = [ { name: "aaron", age: 19, hobbies: [ { activity: "videogames", id: 1 }, { activity: "soccer", id: 8 }, ], }, { name: "Luis", age: 27, hobbies: [ { activity: "code", id: 3 }, { activity: "soccer", id: 8 }, ], }, ]; function getUsersBasedOnActivity(activity) { return users.filter((data) => { const hobbies = data.hobbies.map((hobby) => hobby.activity); return hobbies.includes(activity); }); } console.log(getUsersBasedOnActivity('videogames'))usando array.filter puedes filtrar los objetos que no tienen el rasgo que buscas userArray.filter(x => x.hobbies[0].activity === "videogames");