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.