Arrays são a estrutura de dados mais comum em JavaScript. Você vai encontrá-los em toda aplicação que lida com coleções: listas de usuários, produtos, resultados de APIs. Vamos direto ao ponto.
Criando e Acessando Arrays
Um array é uma lista ordenada. Você pode criá-lo de duas formas:
// Forma literal (mais comum)
const cores = ['vermelho', 'azul', 'verde'];
// Usando o construtor
const numeros = new Array(1, 2, 3, 4, 5);
// Array vazio que será preenchido depois
const usuarios = [];
Para acessar elementos, use índices começando em 0:
const frutas = ['maçã', 'banana', 'laranja'];
console.log(frutas[0]); // 'maçã'
console.log(frutas[1]); // 'banana'
console.log(frutas[2]); // 'laranja'
console.log(frutas[3]); // undefined (não existe)
Propriedade útil: length retorna o tamanho do array.
const numeros = [10, 20, 30, 40];
console.log(numeros.length); // 4
console.log(numeros[numeros.length - 1]); // 40 (último elemento)
Métodos Essenciais para Manipulação
Vamos aos métodos que você vai usar 80% do tempo.
Adicionar e Remover Elementos
const lista = ['a', 'b', 'c'];
// push() - adiciona ao final
lista.push('d');
console.log(lista); // ['a', 'b', 'c', 'd']
// pop() - remove do final
lista.pop();
console.log(lista); // ['a', 'b', 'c']
// unshift() - adiciona no início
lista.unshift('z');
console.log(lista); // ['z', 'a', 'b', 'c']
// shift() - remove do início
lista.shift();
console.log(lista); // ['a', 'b', 'c']
Cuidado: push/pop são rápidos. unshift/shift são lentos em arrays grandes porque precisam reindexar todos os elementos.
Encontrar Elementos
const frutas = ['maçã', 'banana', 'laranja', 'banana'];
// indexOf() - retorna o índice da primeira ocorrência
console.log(frutas.indexOf('banana')); // 1
console.log(frutas.indexOf('uva')); // -1 (não encontrou)
// includes() - retorna true/false
console.log(frutas.includes('laranja')); // true
// find() - retorna o primeiro elemento que satisfaz uma condição
const numeros = [10, 25, 30, 45];
const maiorQueVinte = numeros.find(num => num > 20);
console.log(maiorQueVinte); // 25
Iterando Sobre Arrays
O loop for clássico funciona, mas JavaScript tem métodos mais elegantes.
forEach: Quando Você Só Precisa Executar Algo
const usuarios = ['Ana', 'João', 'Maria'];
usuarios.forEach((nome, indice) => {
console.log(`${indice + 1}. ${nome}`);
});
// Saída:
// 1. Ana
// 2. João
// 3. Maria
map: Transformar Todos os Elementos
O map cria um novo array transformado. É imutável - não modifica o original.
const precos = [10, 25, 30, 45];
const precosComImposto = precos.map(preco => preco * 1.1);
console.log(precosComImposto); // [11, 27.5, 33, 49.5]
console.log(precos); // [10, 25, 30, 45] (original intacto)
// Exemplo real: arredondar valores
const valores = [10.555, 20.333, 30.999];
const arredondados = valores.map(v => Math.round(v * 100) / 100);
console.log(arredondados); // [10.56, 20.33, 31]
filter: Selecionar Subconjuntos
const idades = [15, 22, 18, 30, 12, 45];
const maioresDeIdade = idades.filter(idade => idade >= 18);
console.log(maioresDeIdade); // [22, 18, 30, 45]
// Combinando com map: filtrar e transformar
const usuarios = [
{ nome: 'Ana', ativo: true },
{ nome: 'João', ativo: false },
{ nome: 'Maria', ativo: true }
];
const nomesAtivos = usuarios
.filter(user => user.ativo)
.map(user => user.nome);
console.log(nomesAtivos); // ['Ana', 'Maria']
reduce: Acumular Valores
O reduce é o mais poderoso e o que mais assusta iniciantes. Mas é simples: você percorre o array acumulando um valor.
const numeros = [1, 2, 3, 4, 5];
// Somar todos os números
const soma = numeros.reduce((acumulador, valorAtual) => {
return acumulador + valorAtual;
}, 0); // 0 é o valor inicial
console.log(soma); // 15
// Exemplo real: contar frequência de itens
const frutas = ['maçã', 'banana', 'maçã', 'laranja', 'banana', 'maçã'];
const frequencia = frutas.reduce((contador, fruta) => {
contador[fruta] = (contador[fruta] || 0) + 1;
return contador;
}, {});
console.log(frequencia);
// { 'maçã': 3, 'banana': 2, 'laranja': 1 }
Destructuring e Spread
Dois recursos modernos que tornam o trabalho com arrays muito mais limpo.
Destructuring: Extrair Valores
// Atribuição direta
const [primeiro, segundo, terceiro] = [100, 200, 300];
console.log(primeiro); // 100
console.log(segundo); // 200
// Ignorar elementos
const [a, , c] = [1, 2, 3];
console.log(a); // 1
console.log(c); // 3
// Rest operator
const [head, ...tail] = [1, 2, 3, 4];
console.log(head); // 1
console.log(tail); // [2, 3, 4]
Spread: Copiar e Combinar
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
// Combinar arrays
const combinado = [...array1, ...array2];
console.log(combinado); // [1, 2, 3, 4, 5, 6]
// Copiar array (não referência)
const copia = [...array1];
copia.push(99);
console.log(array1); // [1, 2, 3] (original intacto)
console.log(copia); // [1, 2, 3, 99]
// Adicionar itens no meio
const numeros = [1, 2, 5];
const completo = [...numeros.slice(0, 2), 3, 4, ...numeros.slice(2)];
console.log(completo); // [1, 2, 3, 4, 5]
Conclusão
Arrays são fundamentais em JavaScript. Domine map, filter, reduce e você vai escrever código mais limpo. Pratique esses exemplos no console do navegador ou num arquivo .js.
Quer receber mais conteúdos práticos como este direto no seu email? Cadastre-se no MeuPasso (meupasso.com.br) e tenha acesso a uma trilha completa de aprendizado em programação, com exercícios reais e projetos guiados.