Hola, les saluda Luis y hoy les traigo otro nuevo tutorial.
Índice
Repasemos algunos métodos para esta tarea
En este artículo, presentaré algunas de las formas que más utilizo para buscar en una matriz. ¡Vamos a sumergirnos!
IndexOf ()
utiliza una comparación estricta para encontrar un elemento y luego devuelve el índice de ese elemento.
Por ejemplo:
let languages = [‘Java’, ‘Kotlin’, ‘Python’, ‘Ruby’, ‘JavaScript’]; console.log(languages.indexOf(‘Ruby’)); // 3 console.log(languages.indexOf(‘Golang’)); // -1
Si el valor no se encuentra en la matriz, será devuelto -1
.
IndexOf ()
devuelve el índice del primer elemento encontrado comenzando la primera posición. Si desea buscar desde la última posición, tome lastIndexOf ()
.
let numbers = [1, 6, 3, 1, 5]; console.log(numbers.lastIndexOf(1)); // 3 console.log(numbers.indexOf(1)); // 0
Utilizando includes()
para encontrar un elemento en una matriz es bastante sencillo. Todo lo que necesita es pasar un valor como parámetro a la función a cualquiera verdadero
o falso
es regresado.
Por ejemplo:
let jobs = [‘Doctor’, ‘Programmer’, ‘Designer’, ‘Civil Engineer’,‘Teacher’]; let hasDoctor = jobs.includes(‘Doctor’); // true let hasYoutuber = jobs.includes(‘Youtuber’); // false
En el ejemplo anterior, Doctor
está en la lista trabajos
, por lo que el resultado devuelto es verdadero
. De lo contrario, trabajos
no contiene Youtuber
, entonces es regresado falso
.
Una cosa que debe recordar es que la comparación de includes()
es estricto. Para hacerlo más claro, eche un vistazo al siguiente ejemplo:
let stuff = [100, ‘banana’, ‘2020’]; console.log(stuff.includes(‘100’)); // false console.log(stuff.includes(100)); // true
100 y '100'
son de diferentes tipos, entonces stuff.includes ('100')
devuelve falso
como resultado.
Includes()
tiene un segundo parámetro que indica desde qué posición debe comenzar a buscar. El valor predeterminado del segundo parámetro es 0
.
Repasemos el primer ejemplo, ¿qué sucedería si quisiera encontrar Doctor
a partir del índice 1
?
let hasDoctor = jobs.includes(‘Doctor’, 1);
Como puedes ver en la lista trabajos
, no hay Doctor
desde el índice 1 hasta el final de la lista. Como resultado, falso
será devuelto.
En lugar de simplemente pasar el valor que necesita buscar, find ()
requieren una función de devolución de llamada como parámetro.
Por ejemplo:
let fruits = [‘mango’, ‘banana’, ‘strawberry’, ‘orange’]; console.log(fruits.find(item => item === ‘banana’)); // banana console.log(fruits.find(item => item === ‘kiwi’)); // undefined
El resultado es el valor del primer elemento de la matriz que satisface la condición proporcionada.
Bueno, es fácil de entender, pero creo que nadie usaría find ()
con una condición simple como el ejemplo.
Quiero decir, cuando eliges find ()
para buscar cosas, se supone que debes hacer una condición un poco más compleja para aprovecharla. Algo como:
fruits.find(item => item.length > 3 && item !== ‘mango’);
A veces, necesita una lista de elementos que satisfagan la condición específica. Puedes ir por filter ()
para completar la tarea.
let movies = [‘Spiderman’, ‘The Avengers’, ‘Flash’, ‘Wonder Woman’]; console.log(movies.filter(item => item.length > 5)); // [‘Spiderman’, ‘The Avengers’, ‘Wonder Woman’]
Después de completar tareas usando la función JavaScript incorporada o bibliotecas externas, tiendo a codificar las cosas usando solo JavaScript puro.
Me divierte haciendo eso, y además me ayuda a perfeccionar mis habilidades de codificación.
Entonces, para este problema de búsqueda, usaré for loop
:
let findIndex = function (list, value) { const length = list.length || 0; if (length === 0) { return -1; } for (let i = 0; i < length; i++) { if (list[i] === value) { return i; } } return -1; }; let simpleList = [‘I’, ‘am’, ‘28’]; console.log(findIndex(simpleList, ‘am’)); // 1 console.log(findIndex(simpleList, 28)); // -1
Esta es solo una solución simple para elementos de tipo primitivo. Para trabajar con objetos, necesita un poco más de trabajo.
El punto es que necesita profundizar un poco más en cada función que usa para comprender cómo funciona y si puede desarrollar las suyas propias. Creo que esa es la mentalidad de codificación que debes abordar.
Por ejemplo, si quiero comprobar si existe un elemento, elegiré includes()
. Cuando la condición se vuelva más compleja, usaré find ()
.
Espero que disfrutes este artículo.
Añadir comentario