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

  1. Declaramos notas com seis valores numéricos.
  2. notas.slice(0, 3) devolve um novo array com os elementos dos índices 0, 1 e 2 — o 3 é exclusivo.
  3. Guardamos o resultado em primeiras e imprimimos: [ 7, 4, 9 ].
  4. notas.includes(10) percorre o array e retorna true porque 10 existe.
  5. notas.indexOf(6) retorna 4, que é o índice onde 6 aparece.
  6. O console.log(notas) final comprova que slice nã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 índice 3: o fim é exclusivo, então o 10 fica de fora.
  • Trocar includes por indexOf e comparar com true: indexOf devolve número, então notas.indexOf(10) === true é sempre false.
  • Esquecer que indexOf retorna -1 quando o valor não existe; comparar com 0 dá 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 ]