Come in Ruby, anche in JavaScript i cicli for sono quasi sempre sostituibili da metodi più espressivi.

const nums = [1, 2, 3, 4, 5];

nums.map((n) => n * 2);        // [2, 4, 6, 8, 10]
nums.filter((n) => n % 2 === 0); // [2, 4]
nums.reduce((acc, n) => acc + n, 0); // 15
nums.find((n) => n > 3);       // 4
nums.some((n) => n > 4);       // true
nums.every((n) => n > 0);      // true

Sono tutti immutabili (tranne pochi come sort e reverse): non modificano l'array originale, ne restituiscono uno nuovo. Questo li rende perfetti in React, dove mutare lo stato è vietato.

Si concatenano leggendosi come una frase: utenti.filter(attivo).map(nome). Il codice diventa una pipeline di trasformazioni, non un labirinto di indici.