Tengo una serie de objetos aquí:
const users = [ { name: 'xyz', claims: [ {"location": 'dallas', "id": '123'}, {"location": 'frisco', "id": '123'}, {"location": 'plano', "id": '123'}, ] }, { name: 'abc', claims: [ {"location": 'richardson', "id": '123'}, {"location": 'rowlett', "id": '123'}, {"location": 'dallas', "id": '123'}, ] }, { name: 'adr', claims: [ {"location": 'frisco', "id": '123'}, {"location": 'irving', "id": '123'}, {"location": 'dallas', "id": '123'}, ] } ]Quiero obtener todas las ubicaciones con dallas como valor. ¿Cómo puedo hacer eso? Sé que probablemente usaría un bucle (quizás un forEach), pero no estoy exactamente seguro de cómo podría obtener los valores que necesito. ¿Usaría filtro?
Use flatMap con una combinación de filter :
const dallasLocations = users.flatMap(user => { return user.claims.filter(claim => claim.location === 'dallas') })Puede usar flatMap para aplanar la matriz mapeada después de filtrar las ubicaciones que equivalen a dallas .
const users = [ { name: 'xyz', claims: [ {"location": 'dallas', "id": '123'}, {"location": 'frisco', "id": '123'}, {"location": 'plano', "id": '123'}, ] }, { name: 'abc', claims: [ {"location": 'richardson', "id": '123'}, {"location": 'rowlett', "id": '123'}, {"location": 'dallas', "id": '123'}, ] }, { name: 'adr', claims: [ {"location": 'frisco', "id": '123'}, {"location": 'irving', "id": '123'}, {"location": 'dallas', "id": '123'}, ] } ] const result = users.flatMap(u => u.claims.filter(c => c.location === 'dallas')) console.log(result)