Só um detalhe: como neste caso vc está criando um novo array, no qual cada elemento é o resultado do processamento do respectivo elemento no array original, então acredito que map
seria o mais adequado, afinal ele é feito pra isso (para cada elemento do array, faz algo e retorna outro array com os resultados). Ou então o for
"tradicional" mesmo (ou for..of
, que pessoalmente tenho preferido quando não preciso dos índices, somente dos valores).
Se bem que os exemplos não são equivalentes: no map
vc usa o índice do elemento como key
, nos outros usa propriedades do objeto, no for..in
vc itera por todas as propriedades de um único usuário (em vez de ter um array de usuários), e no for..of
o próprio nome é usado como key
. Mas enfim...
Lembrando também que existem diferenças sutis entre o for
"tradicional", for..in
e for..of
- veja aqui e aqui. Em muitos casos pode não fazer diferença, mas é importante saber esses detalhes para não ser pego de surpresa em determinadas situações.
Quanto a usar reduce
para somar os números, tenho minhas ressalvas. Eu acho que nesse caso é um canhão pra matar mosca, e ainda prefiro um loop simples. reduce
tem seus usos, claro, mas percebo um certo abuso dele. Mas pelo jeito sou exceção, parece que "o mercado" pensa diferente...