Búsqueda en arrays
stamps guarda oak, luego elm y otra vez oak, y el cajón sigue del mismo tamaño en esta página porque buscas un valor en lugar de visitar cada casilla.
Pregunta por el sello
En la página anterior forEach visitó cada canción y la llamada misma volvió undefined. Aquí nombras un solo sello, y el cajón ni crece ni se encoge.
Cuatro formas de respuesta
Antes de leer un número, aclara qué forma de respuesta necesitas. Después elige el método según esa forma.
📊 Qué devuelve cada búsqueda
| Método | La pregunta | Qué vuelve | Si no está |
|---|---|---|---|
indexOf |
casilla del primer acierto | un índice | -1 |
lastIndexOf |
casilla del último acierto | un índice | -1 |
includes |
si el valor está guardado | true o false |
false |
find |
pieza cuya prueba se cumple | la pieza misma | undefined |
Los números de casilla salen de indexOf y de lastIndexOf, mientras que includes y find no te entregan una casilla.
Sello de delante
Pregunta en qué casilla se sienta el primer oak. Espera el número 0.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("oak");
console.log(slot);
El registro muestra 0, y el oak de atrás queda fuera de este resultado.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("pine");
console.log(slot);
console.log(stamps.length);
pine nunca se guardó y el registro muestra -1. La longitud sigue en 3, así que no encontrar no es borrar un sello.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.lastIndexOf("oak");
console.log(slot);
El registro muestra 2, o sea el oak del fondo del cajón y no el sello de delante.
let stamps = ["oak", "elm", "oak"];
console.log(stamps.includes("elm"));
console.log(stamps.includes("pine"));
Para elm sale true. Para pine sale false. Ese false no es -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 primera línea es el texto elm y la segunda es undefined. Una prueba que ningún sello supera no es un número de casilla.
Escribe la casilla
Convierte la casilla del primer oak en texto, y si la búsqueda vale -1 muestra la palabra missing en el párrafo.
<!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>
El párrafo muestra 0. Cambia la búsqueda a pine y recarga la página. Entonces verás la palabra missing.
Búscalo tú
Haz estas seis comprobaciones en el mismo cajón.
- Anota la casilla del primer oak y espera 0
- Anota la búsqueda de pine y espera -1 mientras la longitud sigue en 3
- Anota la casilla del último oak y espera 2
- Anota por separado si elm está y si pine está
- Busca elm con find, busca pine también y pon el texto junto a undefined
- Lee el párrafo, busca pine y recarga
Fácil de mezclar
No juntes estos seis casos.
- No trates -1 como una casilla que se puede leer
- No leas true o false como si fueran un índice
- No esperes que find devuelva 1 para elm
- No acudas a forEach cuando solo quieres un sí o un no
- No cuentes otro tipo u otra mayúscula como acierto
- No midas el éxito con if (slot), porque 0 es un acierto real
Qué te llevas
Guarda estas diferencias separadas.
- El primer acierto o -1 sale de indexOf
- El último acierto o -1 sale de lastIndexOf
- El sí o no sale de includes
- El sello mismo o undefined sale de find
- No encontrar deja la longitud quieta
- La página siguiente es la de fechas
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior