JavaScript/Fundamentos/Arrays e Métodos
JavaScript⏱ ~2 min de leitura

Arrays e Métodos

map, filter, reduce, find e muito mais

Arrays em JavaScript são objetos dinâmicos que podem conter qualquer tipo de valor — inclusive misturados. O acesso por índice é O(1). Os métodos funcionais do ES6+ transformam a forma como trabalhamos com arrays: ao invés de loops imperativos, usamos pipelines declarativos.

Os métodos mais importantes: map() transforma cada elemento e retorna um novo array de mesmo tamanho. filter() seleciona elementos que passam em uma condição e retorna um novo array menor. reduce() acumula todos os elementos em um único valor. find() retorna o primeiro elemento que satisfaz a condição. some() verifica se pelo menos um elemento passa no teste. every() verifica se todos passam.

Todos esses métodos são imutáveis — não modificam o array original, mas retornam novos arrays ou valores. Para modificar o array em si, use push() (fim), pop() (remove do fim), unshift() (início), shift() (remove do início), splice() (inserção/remoção em posição específica). O spread operator (...arr) copia um array de forma imutável.

Exemplo.java
const numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// ── map: transforma cada elemento ────────────────
const dobrados = numeros.map(n => n * 2);
// [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

// ── filter: seleciona elementos ───────────────────
const pares = numeros.filter(n => n % 2 === 0);
// [2, 4, 6, 8, 10]

// ── reduce: acumula em um único valor ─────────────
const soma = numeros.reduce((acc, n) => acc + n, 0);
// 55

// ── find e findIndex ──────────────────────────────
const primeiro = numeros.find(n => n > 5);    // 6
const indice   = numeros.findIndex(n => n > 5); // 5

// ── Pipeline de operações (funcional) ────────────
const resultado = numeros
  .filter(n => n % 2 === 0)   // pega pares: [2,4,6,8,10]
  .map(n => n ** 2)            // eleva ao quadrado: [4,16,36,64,100]
  .reduce((acc, n) => acc + n, 0); // soma: 220

// ── Spread e cópia imutável ───────────────────────
const original = [1, 2, 3];
const copia = [...original, 4, 5]; // [1,2,3,4,5]
const semPrimeiro = original.slice(1); // [2,3] — não muda original

// ── Desestruturação de arrays ─────────────────────
const [primeiro2, segundo, ...resto] = [10, 20, 30, 40, 50];
// primeiro2=10, segundo=20, resto=[30,40,50]
💡 Dica pro

Encadeie map → filter → reduce para transformações complexas. Cada método retorna um novo array, então você pode compor operações de forma legível e sem variáveis intermediárias.

Recompensa+35 XP+exercícios