Ich habe ein Array von Objekten, bei denen ich nur ein Array von Standorten nehme. Mein Ziel ist es, dieses Speicherort-Array zu einem Array zusammenzuführen. Ich schaffe es jedoch nicht und erhalte ein leeres Array. So mache ich es:
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);
Was mache ich hier falsch? Das Ergebnis sollte sein
['aaaa', 'bbbbbb', 'cccccc', 'ddd', 'aaadsad', 'sefd', 'ffff', 'eeee', 'sfdsfsd'];
javascript
arrays
typescript
user122222
quelle
quelle
flatMap
wie folgtSie können versuchen mit
flatMap()
:quelle
Sie könnten eine
Array#flatMap
mit der gewünschten Eigenschaft nehmen. Wenn die Eigenschaft nicht angegeben ist, fügen Sie ein Standardarray hinzu|| []
.quelle
Kann auch mit der Funktion Reduzieren aus Array.prototype gelöst werden.
hoffe das hilft
quelle
Ich habe zu lange damit verbracht, meine eigene Lösung nicht zu veröffentlichen - ein interessantes Rätsel für mich, obwohl die anderen Antworten zweifellos performanter und lesbarer sind. Es verwendet dieselbe Strategie wie Ihr ursprünglicher Beitrag, um herauszufinden, wo ein Fehler aufgetreten ist.
quelle