JavaScript: compruebe si la matriz contiene un valor/elemento

En este tutorial, repasaremos ejemplos de cómo verificar si una matriz incluye/contiene un elemento o valor en JavaScript.

Introducción

Las matrices son una de las estructuras de datos más utilizadas en Ciencias de la Computación. Al tratar con una lista de elementos (matriz), a menudo se nos pide que busquemos un valor particular en la lista. JavaScript contiene algunos métodos integrados para verificar si una matriz tiene un valor u objeto específico.

En este artículo, veremos cómo verificar si una matriz incluye/contiene un valor o elemento en JavaScript.

Comprobar matriz de valores primitivos incluye un valor

Array.incluye() Función

La forma más sencilla de verificar un valor primitivo en una matriz es usar el método includes():

1
2
3
4
5
let isInArray = arr.includes(valueToFind[, fromIndex])
// arr         - array we're inspecting
// valueToFind - value we're looking for
// fromIndex   - index from which the seach will start (defaults to 0 if left out)
// isInArray   - boolean value which tells us if arr contains valueToFind

Por ejemplo, vamos a comprobar si la matriz de animales contiene emojis de perros y gatos:

1
2
3
4
let animals = ["🐘", "🐒", "🐶", "🐍"]

animals.includes("🐶") // true
animals.includes("🐱") // false

La función devuelve un valor booleano, lo que significa la presencia o ausencia del valor.

Array.indexOf() Función

En los casos en que necesitamos la ubicación exacta del elemento que estamos buscando, podemos usar el método indexOf(elem), que busca elem en la matriz especificada y devuelve el índice de su primera aparición, y -1 si la matriz no contiene elem.

Por ejemplo, podemos buscar la primera aparición de una calificación en una matriz que contiene calificaciones:

1
2
3
4
let grades = ["B", "D", "C", "A"]

grades.indexOf("A") // 3
grades.indexOf("F") // -1

En primera instancia, el elemento está presente y se devuelve su posición. En la segunda instancia, el valor devuelto significa que el elemento no está presente.

Podemos usar esto para alterar el flujo de código fácilmente:

1
2
3
4
5
6
7
let grades = ["B", "D", "C", "A"]

if (grades.indexOf("F") >= 0) {
    console.log("Element is present");
} else {
    console.log("Element is not present");
}

Si pasamos en F, se imprime el mensaje adecuado:

1
Element is not present

Comprobando si la matriz de objetos incluye el objeto {#comprobando si la matriz de objetos incluye el objeto}

alguna() Función

Al buscar un objeto, includes() comprueba si la referencia del objeto proporcionado coincide con la de la matriz. Esto rara vez es lo que queremos, porque los objetos pueden tener campos idénticos con valores correspondientes pero diferentes referencias.

Podemos usar el método some() para buscar por el contenido del objeto. El método some() toma un argumento, acepta una devolución de llamada, que se ejecuta una vez por cada valor en la matriz hasta que encuentra un elemento que cumple la condición establecida por la función devolución de llamada y devuelve verdadero.

Veamos some() en acción para entenderlo mejor:

1
2
3
4
let animals = [{name: "dog"}, {name: "snake"}, {name: "monkey"}, {name: "donkey"}]
let element = {name: "monkey"}

animals.some(animal => animal.name === element.name)

La función de devolución de llamada devuelve “falso” para los dos primeros casos, pero devuelve “verdadero” para el tercer elemento, ya que los nombres coinciden. Después de esto, some() detiene la ejecución y devuelve true.

Conclusión

En este artículo, hemos repasado las pocas formas de verificar si una matriz contiene un valor o no, en JavaScript.

Hemos cubierto la función includes(), que devuelve un valor booleano si el valor está presente. La función indexOf() devuelve el índice de un valor si está presente, y -1 si no lo está.

Finalmente, para los objetos, la función some() nos ayuda a buscar la presencia de objetos en función de su contenido.