¿Cómo haría para filtrar una matriz en función de propiedades específicas dentro de ella?
Por ejemplo, si solo quisiera los objetos con la propiedad de season en ellos.
[ { population: 121321313, location: 'American city in the East', }, { season: 'winter', population: 54646546, location: 'Canadian city in the East', }, { population: 6546467, location: 'American city in the West', }, { season: 'fall', population: 145313, location: 'American city in the South', }, { population: 12673, location: 'Canadian city2 in the East', }, { population: 141313, location: 'Canadian city in the South', }, { season: 'fall', population: 1264473, location: 'Canadian city4 in the East', }, { population: 12673, location: 'Canadian city6 in the South', }, ];Está buscando Object#hasOwnProperty . Específicamente, está buscando filter su matriz solo a los elementos que tienen la season de propiedad que puede lograr de esta manera:
const cities = [ { "population": 121321313, "location": "American city in the East" }, { "season": "winter", "population": 54646546, "location": "Canadian city in the East" }, { "population": 6546467,"location": "American city in the West"}, { "season": "fall", "population": 145313, "location": "American city in the South" }, { "population": 12673, "location": "Canadian city2 in the East" }, { "population": 141313, "location": "Canadian city in the South" }, { "season": "fall", "population": 1264473, "location": "Canadian city4 in the East" }, { "population": 12673, "location": "Canadian city6 in the South" } ]; const filteredCities = cities.filter(x => x.hasOwnProperty("season")); console.dir(filteredCities); También podría usar el Reflect.has más moderno. Consulte Javascript object.hasOwnProperty() frente a Reflect.has() o ¿Cómo verifico si un objeto tiene una propiedad específica en JavaScript? para más información.
const cities = [ { "population": 121321313, "location": "American city in the East" }, { "season": "winter", "population": 54646546, "location": "Canadian city in the East" }, { "population": 6546467,"location": "American city in the West"}, { "season": "fall", "population": 145313, "location": "American city in the South" }, { "population": 12673, "location": "Canadian city2 in the East" }, { "population": 141313, "location": "Canadian city in the South" }, { "season": "fall", "population": 1264473, "location": "Canadian city4 in the East" }, { "population": 12673, "location": "Canadian city6 in the South" } ]; const filteredCities = cities.filter(x => Reflect.has(x, "season")); console.dir(filteredCities);puede usar la declaración: para ... de, para iterar objetos, luego busque sus elementos y empuje a la nueva matriz
const list = [ { "population": 121321313, "location": "American city in the East" }, { "season": "winter", "population": 54646546, "location": "Canadian city in the East" }, { "population": 6546467, "location": "American city in the West" }, { "season": "fall", "population": 145313, "location": "American city in the South" }, { "population": 12673, "location": "Canadian city2 in the East" }, { "population": 141313, "location": "Canadian city in the South" }, { "season": "fall", "population": 1264473, "location": "Canadian city4 in the East" }, { "population": 12673, "location": "Canadian city6 in the South" } ]; let Newarr = []; for (const item of list) { if(Object.hasOwn(item, "season")) { Newarr.push(item); } } console.log(Newarr);