Eu tenho uma matriz de objetos, onde eu levo apenas a matriz de locais. Meu objetivo é mesclar a matriz desses locais em uma matriz, no entanto, falho em fazê-lo e obtém a matriz vazia. É assim que eu faço:
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);
o que estou fazendo de errado aqui? O resultado deve ser
['aaaa', 'bbbbbb', 'cccccc', 'ddd', 'aaadsad', 'sefd', 'ffff', 'eeee', 'sfdsfsd'];
javascript
arrays
typescript
user122222
fonte
fonte
flatMap
como aqui: stackoverflow.com/questions/39837678/…Você pode tentar com
flatMap()
:fonte
Você pode levar um
Array#flatMap
com a propriedade desejada. Se a propriedade não for fornecida, adicione uma matriz padrão|| []
.fonte
Também pode resolver usando a função Reduzir do Array.prototype.
espero que isto ajude
fonte
Gastei muito tempo nisso para não postar minha própria solução - quebra-cabeça interessante para mim, embora as outras respostas sejam sem dúvida mais eficientes e legíveis. Ele usa o mesmo tipo de estratégia da sua postagem original, o que pode ajudar a apontar onde deu errado.
fonte