Buscar y encontrar en JavaScript: Cuatro formas de buscar en arrays

Go to Homepage

Encontrando elementos con indexOf

Encontrar un elemento específico en un array puede ser una tarea tediosa en JavaScript, pero existe una función que puede hacer todo el trabajo por nosotros: indexOf().

Esta función devuelve el índice de la primera ocurrencia del elemento que estamos buscando en el array. Si el elemento no se encuentra en el array, devuelve -1. En otras palabras, indexOf() busca una coincidencia exacta.

Por ejemplo, imaginemos un array de frutas:

let frutas = ["manzana", "banana", "naranja", "uva"];

Si queremos encontrar el índice de la palabra “naranja” en el array, podemos utilizar indexOf():

let indice = frutas.indexOf("naranja");
console.log(indice); // 2

En este caso, indexOf() devuelve 2 porque “naranja” se encuentra en la posición 2 del array.

Pero ¿qué pasa si buscamos un elemento que no está en el array? Por ejemplo:

let indice = frutas.indexOf("pera");
console.log(indice); // -1

En este caso, indexOf() devuelve -1 porque “pera” no se encuentra en el array.

Es importante tener en cuenta que indexOf() solo devuelve la primera coincidencia que encuentra. Si hay múltiples ocurrencias del elemento que estamos buscando en el array, solo devuelve el índice de la primera.

También podemos utilizar indexOf() en combinación con un bucle para buscar todas las ocurrencias del elemento que estamos buscando:

let frutas = ["manzana", "banana", "naranja", "naranja", "uva"];
let elementoBuscado = "naranja";
let indices = [];

for (let i = 0; i < frutas.length; i++) {
    if (frutas[i] === elementoBuscado) {
        indices.push(i);
    }
}

console.log(indices); // [2, 3]

En este ejemplo, creamos un array vacío llamado “indices” y luego recorremos el array de frutas con un bucle. Si encontramos una coincidencia con el elemento que estamos buscando, agregamos el índice correspondiente a “indices”. Al final, indices contiene los índices de todas las coincidencias de “naranja” en el array.

indexOf() es una función útil para encontrar la primera ocurrencia de un elemento en un array. Si necesitamos encontrar todas las ocurrencias, podemos combinarlo con un bucle y una condición para recorrer todo el array.

Buscando elementos con find y findIndex

Otra forma de buscar elementos dentro de un array en JavaScript es mediante el uso de las funciones find y findIndex. Ambas funciones reciben una función como argumento que se encargará de buscar el elemento que cumpla ciertas condiciones.

La función find busca el primer elemento que cumpla la condición de la función que recibe como argumento y lo devuelve; si no encuentra ningún elemento, devuelve undefined. Por ejemplo, si tenemos un array de personas, podemos buscar la primera persona que tenga una edad mayor a 18 años de la siguiente manera:

const personas = [
    { nombre: "Juan", edad: 30 },
    { nombre: "María", edad: 25 },
    { nombre: "Pedro", edad: 17 },
];
const personaMayorDeEdad = personas.find((persona) => persona.edad > 18);
console.log(personaMayorDeEdad); // { nombre: "Juan", edad: 30 }

La función findIndex, por su parte, busca el índice del primer elemento que cumpla la condición de la función que recibe como argumento y lo devuelve; si no encuentra ningún elemento, devuelve -1. Siguiendo con el ejemplo anterior, podemos buscar el índice de la primera persona que tenga una edad mayor a 18 años de la siguiente manera:

const indexPersonaMayorDeEdad = personas.findIndex(
    (persona) => persona.edad > 18
);
console.log(indexPersonaMayorDeEdad); // 0

Es importante mencionar que ambas funciones dejan de buscar en el momento en que encuentran el primer elemento que cumpla la condición, por lo que si queremos buscar todos los elementos que cumplan ciertas condiciones, debemos utilizar otras técnicas como un for o la función filter.

find y findIndex son funciones muy útiles cuando necesitamos buscar un elemento en particular dentro de un array y no sabemos su posición exacta. Al utilizar una función como argumento, nos da la flexibilidad de buscar elementos con ciertas condiciones de una manera sencilla y en una sola línea de código.

Filtrando arrays con filter

Cuando trabajas con arrays en JavaScript, a menudo necesitas buscar elementos específicos dentro del array que cumplan con ciertas condiciones. Una forma de hacerlo es utilizando el método filter().

Personalmente, hemos utilizado filter() en varios proyectos y hemos encontrado que es una forma simple y efectiva de buscar elementos en arrays.

El método filter() crea un nuevo array con todos los elementos que cumplan la condición que se especifica en una función de devolución de llamada. Esta función de devolución de llamada toma un argumento que representa cada elemento del array y debe devolver true si cumple con la condición o false si no lo hace.

Por ejemplo, si tienes un array de números y quieres crear un nuevo array con todos los números mayores que 5, puedes hacerlo de la siguiente manera:

const numeros = [2, 5, 7, 10, 15];
const mayoresQueCinco = numeros.filter((numero) => numero > 5);
console.log(mayoresQueCinco); // [7, 10, 15]

La función de devolución de llamada en este ejemplo toma un argumento numero y devuelve true si es mayor que 5 y false si no lo es. El método filter() crea un nuevo array con los elementos que cumplen con esta condición.

Puedes usar cualquier tipo de condición en la función de devolución de llamada, incluyendo comprobar si un string está incluido en otro string. Por ejemplo, si tienes un array de nombres y quieres crear un nuevo array con los nombres que contienen la letra “a”, puedes hacerlo así:

const nombres = ["Ana", "Pedro", "María", "Rosa"];
const nombresConA = nombres.filter((nombre) => nombre.includes("a"));
console.log(nombresConA); // ["Ana", "María", "Rosa"]

En este ejemplo, la función de devolución de llamada toma un argumento nombre y devuelve true si contiene la letra “a” y false si no lo hace. El método filter() crea un nuevo array con los elementos que cumplen con esta condición.

El método filter() también puede ser combinado con otros métodos de arrays. Por ejemplo, si tienes un array de objetos y quieres crear un nuevo array con los objetos que tienen un cierto valor en una propiedad específica, puedes hacerlo así:

const personas = [
    { nombre: "Ana", edad: 25 },
    { nombre: "Pedro", edad: 30 },
    { nombre: "María", edad: 20 },
    { nombre: "Rosa", edad: 35 },
];
const mayoresDeTreinta = personas.filter((persona) => persona.edad > 30);
console.log(mayoresDeTreinta); // [{nombre: "Pedro", edad: 30}, {nombre: "Rosa", edad: 35}]

La función de devolución de llamada en este ejemplo toma un argumento persona y devuelve true si su propiedad edad es mayor que 30 y false si no lo es. El método filter() crea un nuevo array con los objetos que cumplen con esta condición.

El método filter() es una forma simple y efectiva de buscar elementos en arrays que cumplan con ciertas condiciones. Puede ser combinado con otros métodos de arrays y es muy versátil. Lo hemos utilizado en muchos proyectos y lo recomendamos para cualquier aplicación que necesite buscar elementos en arrays.

Buscando elementos con includes

Si lo que necesitas es verificar si un elemento específico se encuentra dentro de un array, la función includes de JavaScript puede ser de gran ayuda.

Con esta función, puedes verificar de manera sencilla si un elemento se encuentra en un array, sin necesidad de iterar por todos los elementos con un ciclo for o similar.

En JavaScript, includes es un método que se puede aplicar en arrays, el cual devuelve un booleano indicando si un elemento se encuentra en el array o no.

Por ejemplo, si tenemos el siguiente array:

const frutas = ["manzana", "pera", "plátano", "kiwi"];

Podemos utilizar includes de la siguiente forma:

frutas.includes("pera"); // true
frutas.includes("piña"); // false

En este caso, includes regresa true el primer caso porque 'pera' sí se encuentra en el array frutas. En el segundo caso, includes regresa false, ya que 'piña' no forma parte del array.

Además, includes tiene una funcionalidad adicional, la cual te permite buscar en un array a partir de una posición específica:

frutas.includes("plátano", 2); // true
frutas.includes("plátano", 3); // false

En este caso, frutas.includes('plátano', 2) busca el elemento 'plátano' a partir de la posición 2, la cual es la posición del 'plátano' en el array original. Como resultado, includes regresa true.

Por otro lado, frutas.includes('plátano', 3) busca el elemento 'plátano' a partir de la posición 3, la cual no existe dentro del array. Como resultado, includes regresa false.

Si necesitas verificar si un elemento se encuentra en un array, la función includes es muy efectiva y sencilla de utilizar. Si además necesitas buscar a partir de una posición específica, también puedes hacer uso de esta funcionalidad adicional.

En el siguiente ejemplo, podemos ver como buscar un elemento específico en un array utilizando includes:

const numeros = [23, 56, 78, 2, 9, 35];
const busqueda = 23;

if (numeros.includes(busqueda)) {
    console.log("El número " + busqueda + " se encuentra en el array.");
} else {
    console.log("El número " + busqueda + " no se encuentra en el array.");
}

En este caso, includes nos permite buscar el número 23 en el array numeros. En caso de encontrarlo, se imprimirá el mensaje “El número 23 se encuentra en el array.” en la consola. En caso contrario, se imprimirá “El número 23 no se encuentra en el array.”.

Comparando arrays con every y some

Para mí, JavaScript siempre ha sido un lenguaje de programación interesante, especialmente cuando se trata de trabajar con arrays. En mi experiencia, a menudo he tenido que encontrar una manera de comparar dos arrays para determinar si tienen elementos en común o no. Generalmente, utilizo métodos como indexOf() o includes() para encontrar un elemento específico en un array. Sin embargo, cuando necesito comparar dos arrays completos, las cosas se complican un poco más.

Es entonces cuando los métodos every() y some() entran en juego. Ambos son métodos integrados en JavaScript que se pueden usar para comparar arrays y determinar si sus elementos cumplen ciertas condiciones.

El método every() se utiliza para verificar si todos los elementos de un array cumplen con una determinada condición. Este método devuelve un valor booleano; true si todos los elementos del array cumplen con la condición y false si al menos un elemento no lo hace. Aquí hay un ejemplo de cómo usar every() para verificar si todos los elementos de un array son iguales a cierto valor:

const numeros = [10, 20, 30, 40, 50];

const todosSonMayoresQue5 = numeros.every((numero) => numero > 5);

console.log(todosSonMayoresQue5); // true

El método some(), por otro lado, se utiliza para verificar si al menos un elemento de un array cumple con una determinada condición. Este método también devuelve un valor booleano; true si al menos un elemento del array cumple con la condición y false si no hay ningún elemento que cumpla con ella. Aquí hay un ejemplo de cómo usar some() para verificar si al menos un elemento de un array es mayor que un cierto valor:

const numeros = [10, 20, 30, 40, 50];

const alMenosUnoEsMayorQue60 = numeros.some((numero) => numero > 60);

console.log(alMenosUnoEsMayorQue60); // false

Tanto every() como some() son métodos muy útiles en JavaScript que pueden ahorrarte mucho tiempo al comparar arrays. Si bien existen otros métodos que también pueden ser útiles para comparar arrays y sus elementos, estos dos son los más comunes y fáciles de usar. Espero que esta información te haya sido útil y puedas usarla para mejorar tus habilidades en JavaScript. ¡Hasta la próxima!

Manipulando arrays con map

Una de las formas más comunes de trabajar con arrays en JavaScript es mediante el uso del método map(). Este método nos permite modificar un array existente y crear uno nuevo con los cambios realizados.

En nuestra experiencia, hemos encontrado que map() es especialmente útil cuando necesitamos aplicar una serie de transformaciones a un array. Por ejemplo, supongamos que tenemos un array de números y queremos crear un nuevo array con el valor absoluto de cada número. Podríamos hacerlo de la siguiente manera:

const numeros = [1, -2, 3, -4, 5];
const absolutos = numeros.map((numero) => Math.abs(numero));
console.log(absolutos); // [1, 2, 3, 4, 5]

Este es un ejemplo sencillo, pero map() se vuelve particularmente útil cuando necesitamos aplicar varias transformaciones a un array. Supongamos que tenemos un array de objetos que representan productos, y queremos crear un nuevo array con el nombre y el precio de cada producto, pero en mayúsculas y sin decimales. Podríamos hacerlo de la siguiente manera:

const productos = [
    { nombre: "camisa", precio: 24.99 },
    { nombre: "pantalon", precio: 39.99 },
    { nombre: "calcetines", precio: 9.99 },
];
const simplificados = productos.map((producto) => ({
    nombre: producto.nombre.toUpperCase(),
    precio: Math.floor(producto.precio),
}));
console.log(simplificados); // [{ nombre: "CAMISA", precio: 24 }, { nombre: "PANTALON", precio: 39 }, { nombre: "CALCETINES", precio: 9 }]

En este ejemplo, utilizamos una función flecha para definir la transformación que queremos aplicar a cada objeto en el array productos. La función map() crea un nuevo array con los objetos transformados, y lo asignamos a la variable simplificados.

Como se puede apreciar, el método map() es una herramienta poderosa y muy útil en el mundo de JavaScript y la manipulación de arrays. Su versatilidad y facilidad de uso nos permite extender y manipular data en arrays de una manera fácil y rápida, ahorrando tiempo en tareas repetitivas y volviendo más legible y sencilla la manipulación de arrays.

Otros Artículos