E2 — Analisador de registros (filtros e contadores simples)
Analise um array em memória de linhas de registro, filtre por nível ou palavra-chave e conte eventos com Map. Mantenha tudo pequeno e legível
E2 — Analisador de registros (filtros e contadores simples) é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 3 aulas no total.
O que será criado
Objetivo: Analisar registros na memória.
- Representar linhas como pequenas cadeias de caracteres
- Filtrar por nível ou palavra-chave
- Contar com um Map
- Manter as funções curtas e claras

Dados + analisador
Crie uma estrutura simples para cada linha: hora, nível e texto. Isso é suficiente para filtros e contadores.
// Simulated log lines (time level message)
const LINES = [
"10:00 INFO Start app",
"10:01 WARN Low memory",
"10:02 INFO User login /home",
"10:03 ERROR DB timeout",
"10:04 INFO User login /products",
"10:05 ERROR Network fail",
"10:06 WARN Retry request"
];
// Tiny parser: returns { time, level, text }
function parseLine(line) {
// split on spaces, compact, then rebuild pieces
const parts = line.trim().split(/\\s+/);
if (parts.length < 3) return null;
const time = parts[0];
const level = parts[1];
const text = parts.slice(2).join(" ");
return { time: time, level: level, text: text };
}
console.log("parsed:", parseLine(LINES[2]));
Fundamentos da filtragem
Escreva pequenas funções de filtro para cada pergunta comum. Código curto e legível é melhor que código engenhoso.
// Filter by level or by keyword (case-sensitive for simplicity)
function filterByLevel(lines, want) {
const out = [];
for (const line of lines) {
const p = parseLine(line);
if (p && p.level === want) out.push(p);
}
return out;
}
function filterByKeyword(lines, word) {
const out = [];
for (const line of lines) {
const p = parseLine(line);
if (p && p.text.indexOf(word) !== -1) out.push(p);
}
return out;
}
console.log("ERRORs:", filterByLevel(LINES, "ERROR").length);
console.log("login :", filterByKeyword(LINES, "login").length);
Contadores com Map
Use um Map para os contadores: atualizações rápidas e leituras fáceis por chave.
// Count how many lines per level
function countByLevel(lines) {
const counts = new Map();
for (const line of lines) {
const p = parseLine(line);
if (!p) continue;
const old = counts.get(p.level) || 0;
counts.set(p.level, old + 1);
}
return counts;
}
const c = countByLevel(LINES);
console.log("INFO :", c.get("INFO"));
console.log("WARN :", c.get("WARN"));
console.log("ERROR:", c.get("ERROR"));
Exemplo dos principais N
Faça uma pequena extração de cadeias de caracteres e classifique usando um Map de contagens. Mantenha as regras de análise simples.
// Extract a path after "User login " and rank by frequency
function topLoginPaths(lines, k) {
const freq = new Map();
for (const line of lines) {
const p = parseLine(line);
if (!p) continue;
const mark = "User login ";
const idx = p.text.indexOf(mark);
if (idx !== -1) {
const path = p.text.slice(idx + mark.length).trim();
const old = freq.get(path) || 0;
freq.set(path, old + 1);
}
}
// turn into array and sort descending by count
const arr = Array.from(freq.entries());
arr.sort(function (a, b) { return b[1] - a[1]; });
return arr.slice(0, k);
}
console.log("top paths:", topLoginPaths(LINES, 3));
Orientações para iniciantes
Dicas:
- Primeiro, crie um pequeno analisador.
- Escreva pequenos auxiliares de filtro para cada pergunta.
- Conte com um Map.
- Prefira cadeias de caracteres simples e laços claros para iniciantes.

Questionário sobre contagem com Map
Verificação rápida: estrutura de contagem.

Recapitulação
Recapitulação: Analise cada registro em uma estrutura pequena, filtre por nível/palavra-chave e conte com um Map. Mantenha cada auxiliar curto e evidente.

Perguntas Frequentes
A aula “E2 — Analisador de registros (filtros e contadores simples)” é grátis?
Sim — o texto completo de “E2 — Analisador de registros (filtros e contadores simples)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 3 aulas no total.
O que vou aprender em “E2 — Analisador de registros (filtros e contadores simples)”?
Analise um array em memória de linhas de registro, filtre por nível ou palavra-chave e conte eventos com Map. Mantenha tudo pequeno e legível Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar JavaScript Academy?
Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.
Quanto tempo leva a aula “E2 — Analisador de registros (filtros e contadores simples)”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de JavaScript Academy?
Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- E1 — Avaliador de expressões (parte 1: + e - da esquerda para a direita)
- E2 — Analisador de registros (filtros e contadores simples)
- E3 — Pool/fila de Promises (concorrência assíncrona)