У меня есть массив объектов, где я беру только массив локаций. Моя цель состоит в том, чтобы объединить эти массивы в один массив, но я не могу этого сделать и получить пустой массив. Вот как я это делаю:
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);
что я тут не так делаю? Результат должен быть
['aaaa', 'bbbbbb', 'cccccc', 'ddd', 'aaadsad', 'sefd', 'ffff', 'eeee', 'sfdsfsd'];
javascript
arrays
typescript
user122222
источник
источник
flatMap
как здесь: stackoverflow.com/questions/39837678/…Вы можете попробовать с
flatMap()
:источник
Вы можете взять
Array#flatMap
с желаемой собственностью. Если свойство не указано, добавьте массив по умолчанию|| []
.источник
Можно также решить с помощью функции Reduce из Array.prototype.
надеюсь это поможет
источник
Я потратил слишком много времени на то, чтобы не опубликовать собственное решение - интересная головоломка для меня, хотя другие ответы, несомненно, более производительны и читабельны. Он использует ту же стратегию, что и ваш оригинальный пост, что может помочь указать, где это пошло не так.
источник