Recherche dans un tableau
stamps garde oak, puis elm, puis encore oak, et le tiroir reste de la même taille sur cette page parce que tu cherches une valeur au lieu de visiter chaque case.
Demande le timbre
Sur la page d’avant, forEach a visité chaque chanson et l’appel lui-même est revenu undefined. Ici tu nommes un seul timbre, et le tiroir ne grandit ni ne rétrécit.
Quatre formes de réponse
Avant de lire un nombre, précise la forme de réponse dont tu as besoin. Ensuite tu choisis la méthode selon cette forme.
📊 Ce que chaque recherche renvoie
| Méthode | La question | Ce qui revient | Si rien ne correspond |
|---|---|---|---|
indexOf |
case du premier accord | un indice | -1 |
lastIndexOf |
case du dernier accord | un indice | -1 |
includes |
la valeur est-elle là | true ou false |
false |
find |
pièce dont le test réussit | la pièce elle-même | undefined |
Les numéros de case viennent de indexOf et de lastIndexOf, alors que includes et find ne te donnent pas de case.
Timbre de devant
Demande dans quelle case se trouve le premier oak. Attends-toi au nombre 0.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("oak");
console.log(slot);
Le journal affiche 0, et le second oak reste en dehors de ce résultat.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("pine");
console.log(slot);
console.log(stamps.length);
pine n’a jamais été rangé et le journal affiche -1. La longueur reste 3, donc un échec n’efface pas un timbre.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.lastIndexOf("oak");
console.log(slot);
Le journal affiche 2, c’est-à-dire le oak au fond du tiroir et non le timbre de devant.
let stamps = ["oak", "elm", "oak"];
console.log(stamps.includes("elm"));
console.log(stamps.includes("pine"));
Pour elm s’affiche true. Pour pine s’affiche false. Ce false n’est pas -1.
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);
La première ligne est le texte elm et la seconde est undefined. Un test qu’aucun timbre ne réussit n’est pas un numéro de case.
Écrire la case
Transforme la case du premier oak en texte, et si la recherche vaut -1 montre le mot missing dans le paragraphe.
<!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>
Le paragraphe affiche 0. Remplace la recherche par pine et recharge la page. Tu vois alors le mot missing.
À toi de chercher
Fais ces six vérifications dans le même tiroir.
- Note la case du premier oak et attends 0
- Note la recherche de pine et attends -1 pendant que la longueur reste 3
- Note la case du dernier oak et attends 2
- Note à part si elm est là et si pine est là
- Trouve elm avec find, trouve pine aussi, et pose le texte à côté de undefined
- Lis le paragraphe, cherche pine et recharge
Facile à mélanger
Ne confonds pas ces six cas.
- Ne traite pas -1 comme une case lisible
- Ne lis pas true ou false comme un indice
- N’attends pas que find rende 1 pour elm
- Ne prends pas forEach quand un oui ou un non suffit
- Ne compte pas un autre type ou une autre casse comme un accord
- Ne teste pas la réussite avec if (slot), car 0 est un vrai succès
Ce que tu gardes
Garde ces différences séparées.
- Le premier accord ou -1 vient de indexOf
- Le dernier accord ou -1 vient de lastIndexOf
- Le oui ou non vient de includes
- Le timbre lui-même ou undefined vient de find
- Un échec laisse la longueur tranquille
- La page suivante parle des dates
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut