Vetor e matriz: listas e tabelas dentro do programa
Índice começando em zero, percorrer com laço, buscar um valor e subir para a matriz de duas dimensões com laço aninhado, com saída real no Node.
Vetor organiza vários valores numa sequência acessada por índice; matriz organiza valores por linha e coluna, normalmente como um vetor de vetores. Essas estruturas permitem repetir a mesma regra para uma coleção em vez de criar uma variável por item.
O domínio é um boletim com quatro alunos e três notas. Primeiro vamos dominar uma linha, depois percorrer as doze células da tabela. O laço de repetição fornece o mecanismo; vetor fornece os dados que mudam em cada volta.
Uma variável pode apontar para muitos valores
Sem vetor, três notas viram três nomes e três operações. Com Array, a coleção tem uma identidade e uma quantidade observável:
const notas = [8, 7.5, 9];
console.log(notas);
console.log(notas.length);Pense numa estante numerada: cada posição guarda um item e a ordem é parte da informação. O limite é que um array JavaScript pode ter lacunas, misturar tipos e mudar de tamanho; uma estante física não explica essas regras.
Uma coleção deve representar itens do mesmo papel, mesmo que a linguagem permita misturar. [8, 'ausente', true] obriga todo cálculo a descobrir o significado de cada tipo. Para boletim, mantenha números e represente ausência por uma decisão explícita no modelo.
O índice começa em zero
O primeiro item está no índice zero e o último está em length - 1:
const notas = [8, 7.5, 9];
console.log('primeira', notas[0]);
console.log('segunda', notas[1]);
console.log('última', notas[notas.length - 1]);Índice é deslocamento a partir do começo. O primeiro valor está a zero passos do início; por isso recebe zero. Quantidade e último índice são números diferentes: três itens terminam no índice dois.
Escreva essa relação no papel sempre que um limite confundir: índices válidos vão de zero, inclusive, até comprimento, exclusivo. É a mesma forma de um laço i < length.
Percorrer por índice mostra posição e valor
Quando a posição participa da regra, use um laço indexado:
const notas = [8, 7.5, 9];
for (let indice = 0; indice < notas.length; indice += 1) {
console.log(`índice ${indice}: ${notas[indice]}`);
}A condição usa menor estrito. Quando indice chega a três, a avaliação é falsa e o corpo não tenta ler uma quarta nota. Trocar por menor ou igual executaria uma volta extra.
Se você precisa apenas dos valores, for...of comunica melhor a intenção:
const notas = [8, 7.5, 9];
let soma = 0;
for (const nota of notas) soma += nota;
console.log(soma);Não confunda for...of, que entrega valores, com for...in, que enumera chaves. Para arrays, prefira índice tradicional quando precisa da posição e for...of quando precisa do conteúdo.
Buscar é percorrer até encontrar ou terminar
Uma busca manual guarda o índice e para quando encontra:
const alunos = ['Ana', 'Bruno', 'Carla', 'Diego'];
let indiceEncontrado = -1;
for (let indice = 0; indice < alunos.length; indice += 1) {
if (alunos[indice] === 'Carla') {
indiceEncontrado = indice;
break;
}
}
console.log(indiceEncontrado);-1 representa “não encontrado” porque nenhum índice válido é negativo. A operação pronta findIndex usa o mesmo contrato. O laço manual ensina condição de parada; o método pronto reduz ruído quando a equipe já conhece callback.
Teste também o ausente. Sem esse caso, você não sabe se o algoritmo distingue primeiro item e nenhum item:
const alunos = ['Ana', 'Bruno', 'Carla'];
console.log(alunos.findIndex((nome) => nome === 'Ana'));
console.log(alunos.findIndex((nome) => nome === 'Eva'));Não use if (indice) para conferir resultado: índice zero vira falso e -1 vira verdadeiro. Compare explicitamente com -1.
Índice fora do intervalo devolve undefined
Uma leitura fora da coleção não lança erro imediatamente:
const notas = [8, 7.5, 9];
console.log(notas[3]);O defeito costuma aparecer duas linhas depois, quando o programa tenta usar o valor como número:
const notas = [8, 7.5, 9];
try {
console.log(notas[3].toFixed(1));
} catch (erro) {
console.log(`${erro.name}: ${erro.message}`);
}A mensagem aponta undefined, mas a causa é o índice inválido. Volte à linha que escolheu a posição e confira o limite. Um teste de mesa revela a volta extra antes da chamada de toFixed.
Matriz adiciona linha e coluna
Uma matriz de quatro alunos por três avaliações pode ser um array de arrays:
const boletim = [
[8, 7, 9],
[6, 8, 7],
[9, 9, 10],
[5, 6, 7],
];
console.log(boletim[0][2]);
console.log(boletim[3][1]);O primeiro índice escolhe a linha; o segundo escolhe a coluna dentro dela. Nomeie mentalmente boletim[linha][coluna]. Inverter os índices pode devolver outro valor válido, o que torna o bug silencioso.
Antes de percorrer, verifique se todas as linhas têm três colunas. Uma matriz irregular exige outra regra; não finja que células ausentes são notas.
Laço dentro de laço percorre doze células
Enquanto a coluna percorre uma linha inteira, a linha externa fica parada. Depois a externa avança e a coluna recomeça em zero:
const boletim = [
[8, 7, 9],
[6, 8, 7],
[9, 9, 10],
[5, 6, 7],
];
let voltas = 0;
for (let linha = 0; linha < boletim.length; linha += 1) {
for (let coluna = 0; coluna < boletim[linha].length; coluna += 1) {
voltas += 1;
console.log(linha, coluna, boletim[linha][coluna]);
}
}
console.log('voltas', voltas);Quatro linhas vezes três colunas produzem doze voltas. Essa multiplicação antecipa o custo de laços aninhados, assunto da complexidade de algoritmo.
Missão: somar uma coluna do boletim
Some a terceira avaliação de todos os alunos. O critério é obter 33 e executar quatro voltas, sem somar as outras colunas:
const boletim = [[8, 7, 9], [6, 8, 7], [9, 9, 10], [5, 6, 7]];
let soma = 0;
for (const notasDoAluno of boletim) soma += notasDoAluno[2];
console.log(soma);Revise a forma da matriz antes de calcular. Cada linha deve representar o mesmo papel e ter as colunas esperadas; uma linha curta transforma a leitura seguinte em undefined. Valide a estrutura na fronteira e só então deixe o laço assumir o contrato retangular.
Quando linha e coluna têm significado, considere objetos para nomear e arrays para ordenar. Uma lista de alunos com propriedade notas pode comunicar melhor que decorar que coluna zero é prova, coluna um é trabalho e coluna dois é projeto. Matriz continua útil para operações tabulares, desde que o mapa das colunas esteja explícito.
Depois escreva uma função que recebe o índice da coluna, revise acumulador e média, consulte o guia de lógica e siga pela trilha.
Perguntas frequentes
Vetor e array significam a mesma coisa em JavaScript?
JavaScript possui uma matriz nativa separada de Array?
Dúvidas e comentários
Travou em algum passo? Pergunte aqui — a equipe e outros alunos respondem.
Entrar para perguntarÉ o mesmo login gratuito dos cursos.
Nenhuma dúvida por aqui ainda — a primeira pode ser a sua.
Todo o código deste artigo foi executado em Node v26.3.0, e as saídas exibidas são as reais — como produzimos este conteúdo.
Fontes consultadas
- ECMAScript — Array Objects — tc39.es
- ECMAScript — Array.prototype.findIndex — tc39.es


