Comprobar valores de un array

Más tarde o más temprano vas a necesitar programar para encontrar un valor en una lista de tipo array. Esta operación se puede hacer con un bucle for o un método de recorrido del array. Pero existen formas que facilitan la tarea de encontrar un elemento en un array:

  • every(): verifica una condición para todos los elementos del array
  • some(): verifica si algún elemento cumple una condición dada
  • includes(): comprueba si un elemento está en el array
  • find(): dice cual es el primer elemento que cumple una condición dada

Son métodos usados para buscar si un valor determinado se encuentra en un array o si hay un valor que cumpla con una condición dada.

Los dos primeros métodos usan una función de llamada (las callback function en inglés). Este tipo de funciones puede recibir hasta tres argumentos, por orden: valor del elemento testeado, indice del mismo y el array completo. Y también como es habitual con estas funciones, el método puede usar un segundo argumento que será la variable this en el cuerpo de la función. Útil si se necesita otra variable para la comprobación

Así every() determina si todos los elementos de un array cumplen una condición, condición que se da mediante una función de llamada.

El resultado devuelto es true si todos lo cumplen (o el array está vacío) o false si al menos un elemento no cumple con la condición

var datos =[4,6,8,10,12];

var espar = function(x){ return x%2==0};

var testPar = datos.every(espar);

console.log("¿Datos son pares? "+testPar);

En este ejemplo el resultado dice que todos son pares.

El método some() por su parte comprueba si al menos uno de los elementos cumple con la condición pasada por la función callback. Basta con que la función devuelva true para un elemento para que el resultado sea true.

var datos=[ 1,1,1,1,0,1];

var hayCeros;

hayCeros = datos.some(function(v){return v==0});

console.log("¿Algún cero? "+hayCeros)

En este sencillo ejemplo se comprueba si al menos un elemento es 0. Solo comprueba, no indica cual es el elemento que cumple la condición

Estos métodos podrían también usar para averiguar si un array contiene o no un valor determinado, pero el método includes() facilita esta tarea. Se trata de un método que recorre el array y devuelve true si encuentra algún elemento que sea igual al valor que se le pasa como argumento. Si no lo encuentra devuelve false, pero no indica nada más.

Puede usar un segundo argumento para indicar que busca desde un indice hasta el final, si no se indica nada busca desde el principio.

var colores = ["rojo","verde", "azul", "negro"];

var miColor;

miColor = colores.includes("amarillo");

console.log("Color amarillo en la lista: "+miColor);

Por último dentro de este apartado de comprobación valores está el método find(), este método nos dirá el valor del primer elemento que cumple con una condición dada. Para eso usa el mecanismo de la función de llamada para comprobar cada elemento del array.

Si la función de llamada devuelve true para un elemento del array, el método devuelve el valor correspondiente, en caso contrario devuelve undefined. Solo devuelve el primer valor que encuentra y no sigue buscando. .

var datos=[34,56,12,90,20,35,40];

var multiplo10;

var valor = datos.find(function(v){return v%10==0});

console.log("primer multiplo de 10 es el "+valor) //90    

Con una pequeña modificación podríamos saber también el índice. Es un ejemplo de uso del argumento opcional que se usa como objeto this dentro de la función

var datos=[34,56,12,90,20,35,40];

var multiplo10, indice={idx:0}

var valor = datos.find(function(v,i ){

     this.idx = i;

     return v%10==0}, indice);

console.log("Primer multiplo de 10 es el "+valor+ ", posición "+indice.idx);

Este último es solo un ejemplo de uso del argumento this, un objeto opcional para usar dentro de la función callback. Existen métodos para encontrar índices con menos código.

scripts