Vale lembrar que isso só vale a pena se tiver um array muito grande e forem feitas muitas buscas. Afinal, há um custo inicial para criar o índice de usuários por idade (tanto em tempo quanto em memória), e nem sempre compensa.
Se você só precisa buscar uma ou duas idades, por exemplo, aí um for
simples no array é mais rápido. Fiz uns testes usando o Benchmark.js e só a partir de 10 buscas (ou seja, buscar por 10 idades diferentes) começou a valer a pena. Com menos que isso, fazer vários for
no array (um para cada idade a ser buscada) foi mais rápido. Testando no JSBench.ME, os resultados foram similares: com poucas buscas, o for
simples é mais rápido, e a partir de umas 12 buscas, a sua solução se tornou mais rápida.
Claro que os números exatos podem variar caso a caso, e depende muito do ambiente, dos dados e das buscas feitas. E se forem arrays muito pequenos e/ou poucas buscas, a diferença será irrisória e até imperceptível.
De qualquer forma, temos aqui um exemplo do clássico trade-off (em bom português: "cada escolha, uma renúncia") de tempo e espaço: o programa pode rodar mais rápido, o que compensa o uso extra de memória. Mas tem casos em que não haverá esse ganho. É bom saber que você pode usar essa solução caso precise, mas também é importante saber quando não precisa :-)