Carregando...

Pesquisa em arrays

stamps guarda oak, depois elm e outra vez oak, e a gaveta fica do mesmo tamanho nesta página porque procuras um valor em vez de visitares cada casa.

Pergunta o selo

Na página anterior o forEach visitou cada canção e a própria chamada voltou undefined. Aqui dizes o nome de um selo, e a gaveta nem cresce nem encolhe.

Quatro formas de resposta

Antes de leres um número, esclarece que forma de resposta precisas. Depois escolhes o método segundo essa forma.

📊 O que cada pesquisa devolve

Método A pergunta O que volta Se não estiver
indexOf casa do primeiro acerto um índice -1
lastIndexOf casa do último acerto um índice -1
includes o valor está guardado true ou false false
find peça cujo teste se cumpre a própria peça undefined

Os números de casa vêm de indexOf e de lastIndexOf, enquanto includes e find não te entregam uma casa.

Selo da frente

Pergunta em que casa se senta o primeiro oak. Espera o número 0.

Primeiro oak

javascript
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("oak");
console.log(slot);

O registo mostra 0, e o oak de trás fica de fora deste resultado.

pine em falta

javascript
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("pine");
console.log(slot);
console.log(stamps.length);

pine nunca foi guardado e o registo mostra -1. O comprimento continua 3, por isso não encontrar não é apagar um selo.

oak do fundo

javascript
let stamps = ["oak", "elm", "oak"];
let slot = stamps.lastIndexOf("oak");
console.log(slot);

O registo mostra 2, ou seja o oak no fundo da gaveta e não o selo da frente.

Sim ou não

javascript
let stamps = ["oak", "elm", "oak"];
console.log(stamps.includes("elm"));
console.log(stamps.includes("pine"));

Para elm sai true. Para pine sai false. Esse false não é -1.

O próprio selo

javascript
let stamps = ["oak", "elm", "oak"];
let hit = stamps.find(function (name) {
return name === "elm";
});
console.log(hit);
let miss = stamps.find(function (name) {
return name === "pine";
});
console.log(miss);

A primeira linha é o texto elm e a segunda é undefined. Um teste que nenhum selo passa não é um número de casa.

Escreve a casa

Converte a casa do primeiro oak em texto, e se a pesquisa valer -1 mostra a palavra missing no parágrafo.

Demo da página — casa ou missing

html
<!DOCTYPE html>
<html>
<head>
<title>array-search — page</title>
</head>
<body>
<p id="slot">…</p>
<script>
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("oak");
let line = "missing";
if (slot !== -1) {
line = String(slot);
}
let box = document.getElementById("slot");
box.textContent = line;
</script>
</body>
</html>

O parágrafo mostra 0. Muda a pesquisa para pine e recarrega a página. Aí vês a palavra missing.

Procura tu

Faz estas seis verificações na mesma gaveta.

  1. Regista a casa do primeiro oak e espera 0
  2. Regista a pesquisa de pine e espera -1 enquanto o comprimento fica 3
  3. Regista a casa do último oak e espera 2
  4. Regista à parte se elm está e se pine está
  5. Acha elm com find, acha pine também e põe o texto ao lado de undefined
  6. Lê o parágrafo, procura pine e recarrega

Fácil de misturar

Não juntes estes seis casos.

  • Não trates -1 como uma casa que se pode ler
  • Não leias true ou false como se fossem um índice
  • Não esperes que find devolva 1 para elm
  • Não recorras a forEach quando só queres um sim ou um não
  • Não contes outro tipo ou outra maiúscula como acerto
  • Não meças o sucesso com if (slot), porque 0 é um acerto real

O que levas

Guarda estas diferenças separadas.

  • O primeiro acerto ou -1 vem de indexOf
  • O último acerto ou -1 vem de lastIndexOf
  • O sim ou não vem de includes
  • O próprio selo ou undefined vem de find
  • Não encontrar deixa o comprimento quieto
  • A página seguinte é a das datas

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
8
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo