Tengo esta matriz de objetos con el name y las claves isPinned . Me gustaría almacenar solo el nombre del país en una nueva matriz basada en lo que es isPinned . Por ejemplo, si Australia y China tienen isPinned como verdadero, entonces la nueva matriz sería:
const countriesFiltered = ["Australia", "China"]
const countries = [ { name: "Australia", isPinned: true }, { name: "China", isPinned: true }, { name: "India", isPinned: false }, ];.filter por isPinned y luego .map por name
const namesOfPinnedCountries = countries .filter(it => it.isPinned) .map(it => it.name)Puedes usar mapa plano :
const countries = [ { name: "Australia", isPinned: true }, { name: "China", isPinned: true }, { name: "India", isPinned: false }, ]; const countriesFiltered = countries .flatMap(i => i.isPinned ? i.name : []); console.log(countriesFiltered);.filter() y .map() es la solución clásica, pero también puede hacerlo con .reduce() :
const countries = [ { name: "Australia", isPinned: true }, { name: "China", isPinned: true }, { name: "India", isPinned: false }, ]; const res=countries.reduce((a,c)=> c.isPinned?[...a,c.name]:a,[]); console.log(res);