Médio JavaScript
Filtrando e fatiando notas
Enunciado
Dado o array notas = [7, 4, 9, 10, 6, 8], use slice para obter apenas as três primeiras notas, verifique com includes se a nota 10 está no array original e mostre o índice da nota 6 com indexOf. Imprima os três resultados.
Requisitos
- Usar
slice(0, 3)para obter as três primeiras notas. - Usar
includes(10)no array original. - Usar
indexOf(6)no array original. - Imprimir os três valores, um por linha.
Código inicial
const notas = [7, 4, 9, 10, 6, 8];
// use slice, includes e indexOf
Saída esperada
[ 7, 4, 9 ]
true
4
Ver dica
slice recebe o índice inicial e o final (exclusivo). indexOf retorna -1 quando não encontra.
Mostrar solução
const notas = [7, 4, 9, 10, 6, 8];
// slice copia do índice 0 até o 3 (exclusivo)
const primeiras = notas.slice(0, 3);
console.log(primeiras);
// includes verifica se o valor existe
console.log(notas.includes(10));
// indexOf devolve a posição do valor
console.log(notas.indexOf(6));
// o array original continua intacto
console.log(notas);
Passo a passo
- Declaramos
notascom seis valores numéricos. notas.slice(0, 3)devolve um novo array com os elementos dos índices0,1e2— o3é exclusivo.- Guardamos o resultado em
primeirase imprimimos:[ 7, 4, 9 ]. notas.includes(10)percorre o array e retornatrueporque10existe.notas.indexOf(6)retorna4, que é o índice onde6aparece.- O
console.log(notas)final comprova queslicenão alterou o original.
Por que funciona
slice cria uma cópia rasa do trecho pedido, sem tocar no array fonte — por isso é a escolha certa quando você quer preservar os dados. includes e indexOf apenas consultam o array, também sem modificá-lo.
Erros comuns
- Usar
notas.slice(0, 3)achando que inclui o índice3: o fim é exclusivo, então o10fica de fora. - Trocar
includesporindexOfe comparar comtrue:indexOfdevolve número, entãonotas.indexOf(10) === trueé semprefalse. - Esquecer que
indexOfretorna-1quando o valor não existe; comparar com0dá falso positivo.
Outra forma de resolver
Usar notas.filter((n, i) => i < 3) para o mesmo recorte. filter é preferível quando o critério não é por posição, mas por valor.
Saída esperada
[ 7, 4, 9 ]
true
4
[ 7, 4, 9, 10, 6, 8 ]