Lembra da sua ficha? 🪪
No miniprojeto de "Seu perfil em números" você modelou uma pessoa e calculou a idade dela. Funcionava, mas os apps de verdade não lidam com um só: lidam com listas. Uma loja tem muitos produtos; uma rede social, muitos usuários; uma equipe, muitas pessoas.
Hoje seu app cresce: você dá o salto de uma ficha para uma equipe inteira.
A ideia: um array de objetos
Se uma pessoa é um objeto...
const pessoa = { nome: "Ana", nascimento: 2000 };
...uma equipe é um array de objetos:
const equipe = [
{ nome: "Ana", nascimento: 2000 },
{ nome: "Beto", nascimento: 1990 },
{ nome: "Caro", nascimento: 2010 },
];
Essa estrutura —uma lista de fichas— é o pão de cada dia de qualquer
programador. E você já tem as ferramentas para domá-la: map para transformar,
filter para escolher e reduce para resumir.
Você vai construir peça por peça
idade→ a idade de uma pessoa (sua velha amiga, agora com objetos).nomes→ a lista de nomes da equipe (commap).idadeMedia→ a idade média de toda a equipe (comreduce).resumo→ junta tudo num relatório da equipe.
🚩 Checkpoint 2 de 4. Você já gerencia uma equipe inteira no console. Mais adiante você vai dar uma cara a ela no React e, no final, um backend full-stack (banco de dados + API). Seu projeto, crescendo passo a passo.
Veja funcionando primeiro
Aperte Executar abaixo para ver o relatório pronto. Você vai construí-lo nos exercícios. 👇
Exemplos
O relatório da equipe — aperte Executar
const equipe = [
{ nome: "Ana", nascimento: 2000 },
{ nome: "Beto", nascimento: 1990 },
{ nome: "Caro", nascimento: 2010 },
];
function idade(p, ano) { return ano - p.nascimento; }
function idadeMedia(equipe, ano) {
return equipe.reduce((acc, p) => acc + idade(p, ano), 0) / equipe.length;
}
function resumo(equipe, ano) {
const linhas = equipe
.map((p) => "- " + p.nome + ": " + idade(p, ano) + " anos")
.join("\n");
return "👥 EQUIPE (" + equipe.length + ")\n" + linhas +
"\nIdade média: " + idadeMedia(equipe, ano);
}
console.log(resumo(equipe, 2026));