Javascript: some() vs every()

En una publicación pasada habíamos visto las diferencias entre los métodos: filter() vs find() vs some()

https://fernando-gaitan.com.ar/javascript-filter-vs-find-vs-some/

El método some() es muy útil a la hora de verificar si un elemento dentro de un array cumple con una condición.

Para los siguiente ejemplos, supongamos que tenemos una lista de lamparitas con información como el color, si está encendida y su consumo en watts:

const lamparas = [
  {
    color: "Roja",
    encendida: true,
    consumo: 5,
  },
  {
    color: "Verde",
    encendida: true,
    consumo: 9,
  },
  {
    color: "Azul",
    encendida: true,
    consumo: 11,
  }
];

some()

Como vimos en la publicación anterior, el método some() busca que al menos una de las condiciones se cumpla.

Por ejemplo: si quisiéramos buscar que al menos una de las lamparitas sea de color verde:

const resultado = lamparas.some( l => l.color === "Verde" );
console.log(resultado); //Devuelve true

Lo anterior devuelve un valor verdadero, mientras que lo siguiente no cumple la condición:

const resultado = lamparas.some( l => l.color === "Blanca" );
console.log(resultado); //Devuelve false

Podemos decir entonces que some() sería una suerte de operador OR, en donde al menos una condición debe cumplirse para devolver un resultado boolean con el valor true. Si en cambio ninguno de los elementos cumple con la condición entonces el resultado será false.

CondiciónLámpara 1Lámpara 2Lámpara 3Resultado
Que la lámpara sea de color VerdeFALSETRUEFALSETRUE
Que la lámpara sea de color BlancaFALSEFALSEFALSEFALSE

every()

El método every() funciona de forma similar a some(), aunque con una diferencia considerable: todos los elementos deben cumplir con la condición para devolver una valor verdadero.

Por ejemplo si quisiéramos saber si todas las lámparas están encendidas:

const resultado = lamparas.every( l => l.encendida );
console.log(resultado); //Devuelve true

Sin embargo si lo que queremos saber es si todas las lámparas consumen menos de 11 watts:

const resultado = lamparas.every( l => l.consumo < 11 );
console.log(resultado); //Devuelve false

En este última caso el resultado es false, porque aunque los dos primeros registros se cumplen, el último no.

Podemos decir entonces que every() sería una suerte de operador AND, en donde todas las condiciones deben cumplirse para devolver un resultado boolean con el valor true. Si en cambio uno de los elementos no cumple con la condición entonces el resultado será false.

CondiciónLámpara 1Lámpara 2Lámpara 3Resultado
Que la lámpara esté encendidaTRUETRUETRUETRUE
Que la lámpara sea menor de 11 wattsTRUETRUEFALSEFALSE