Eu tenho uma lista.
[{name:"max", age:50}, {name:"sue", age: 43}, {name:"tom", age: 34}, {name:"tim", age: 33}]
Depois tenho outra lista que me diz quais elementos da lista com as pessoas que preciso trabalhar - só preciso da idade.
[false, true, true, false]
O resultado será
[43, 34]
Como posso obter isso no Typescript com um termo de mapa/filtro? Estou lutando com o índice que diz o que levar.
Em primeiro lugar, é melhor usar
map
para mesclar as duas listas em uma matriz de objetos contendo nomes e idades e, em seguida, usarfilter
para reter apenas os elementos que se alinham com ostrue
valores na segunda lista! e por último, utilizemap
mais uma vez para extrair apenas as idades da lista filtrada!algo assim:
atualizar
Sim, obrigado para @wonderflame, otimizei o código para evitar essa iteração extra combinando a lógica em uma única
map
operação.Você pode usar uma função auxiliar
zip
para combinar as duas listas e depois usar reduzir para obter apenas as idades daquelas que deseja manter:Parque infantil
Use o índice
Array#filter()
e retorne o valor booleano desse item nafilterArray
matriz. Em seguida,Array#map()
o resultado para obter uma lista apenas das idades.Na IMO, não é necessário adicionar digitações explicitamente em qualquer lugar. TypeScript é capaz de inferir que o resultado é do tipo
number[]
automaticamente.