Tengo una variedad de objetos, donde solo tomo ubicaciones. Mi objetivo es fusionar estas ubicaciones en una matriz, sin embargo, no lo hago y obtengo una matriz vacía. Así es como lo hago:
let results = [{
id: '1',
locations: ['aaaa', 'bbbbbb', 'cccccc']
},
{
id: '2',
locations: []
},
{
id: '3',
locations: ['ddd', 'aaadsad', 'sefd']
},
{
id: '4',
locations: ['ffff', 'eeee', 'sfdsfsd']
},
];
const locationIds = [].concat.apply([], ...results.filter(s => s.locations && s.locations.length > 0).map(({
locations
}) => ({
locations
})));
console.log(locationIds);
¿Qué estoy haciendo mal aquí? El resultado debería ser
['aaaa', 'bbbbbb', 'cccccc', 'ddd', 'aaadsad', 'sefd', 'ffff', 'eeee', 'sfdsfsd'];
javascript
arrays
typescript
usuario122222
fuente
fuente
flatMap
como aquí: stackoverflow.com/questions/39837678/…Puedes probar con
flatMap()
:fuente
Podrías taka a
Array#flatMap
con la propiedad deseada. Si no se proporciona la propiedad, agregue una matriz predeterminada|| []
.fuente
También se puede resolver usando la función Reducir de Array.prototype.
espero que esto ayude
fuente
Pasé demasiado tiempo en esto para no publicar mi propia solución, un rompecabezas interesante para mí, aunque las otras respuestas son sin duda más efectivas y legibles. Utiliza el mismo tipo de estrategia que su publicación original, lo que podría ayudar a señalar dónde salió mal.
fuente