Mam szereg obiektów, w których biorę tylko tablicę lokalizacji. Moim celem jest połączenie tych tablic lokalizacji w jedną tablicę, jednak nie udało mi się tego i otrzymam pustą tablicę. Tak to robię:
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);
co tutaj robię źle? Wynik powinien być
['aaaa', 'bbbbbb', 'cccccc', 'ddd', 'aaadsad', 'sefd', 'ffff', 'eeee', 'sfdsfsd'];
javascript
arrays
typescript
użytkownik122222
źródło
źródło
flatMap
jak tutaj: stackoverflow.com/questions/39837678/…Możesz spróbować z
flatMap()
:źródło
Możesz mieć taką pożądaną
Array#flatMap
nieruchomość. Jeśli właściwość nie zostanie podana, dodaj domyślną tablicę|| []
.źródło
Można również rozwiązać za pomocą funkcji Reduce z Array.prototype.
mam nadzieję że to pomoże
źródło
Spędziłem zbyt długo na tym, aby nie publikować własnych rozwiązań - dla mnie interesująca łamigłówka, chociaż pozostałe odpowiedzi są bez wątpienia bardziej wydajne i czytelne. Używa tego samego rodzaju strategii, co oryginalny post, co może pomóc wskazać, gdzie poszło nie tak.
źródło