J'ai un tableau d'objets, où je ne prends que le tableau d'emplacements. Mon objectif est de fusionner ces tableaux d'emplacements en un seul tableau, mais je ne le fais pas et j'obtiens un tableau vide. Voici comment je le fais:
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);
ce que je fais mal ici? Le résultat devrait être
['aaaa', 'bbbbbb', 'cccccc', 'ddd', 'aaadsad', 'sefd', 'ffff', 'eeee', 'sfdsfsd'];
javascript
arrays
typescript
user122222
la source
la source
flatMap
comme ici: stackoverflow.com/questions/39837678/…Vous pouvez essayer avec
flatMap()
:la source
Vous pouvez prendre un
Array#flatMap
avec la propriété recherchée. Si la propriété n'est pas donnée, ajoutez un tableau par défaut|| []
.la source
Peut aussi résoudre en utilisant le Réduire la fonction de Array.prototype.
J'espère que cela t'aides
la source
J'ai passé trop de temps là-dessus pour ne pas poster ma propre solution - puzzle intéressant pour moi, bien que les autres réponses soient sans aucun doute plus performantes et lisibles. Il utilise le même type de stratégie que votre message d'origine, ce qui pourrait aider à indiquer où il a mal tourné.
la source