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ón | Lámpara 1 | Lámpara 2 | Lámpara 3 | Resultado |
|---|---|---|---|---|
| Que la lámpara sea de color Verde | FALSE | TRUE | FALSE | TRUE |
| Que la lámpara sea de color Blanca | FALSE | FALSE | FALSE | FALSE |
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ón | Lámpara 1 | Lámpara 2 | Lámpara 3 | Resultado |
|---|---|---|---|---|
| Que la lámpara esté encendida | TRUE | TRUE | TRUE | TRUE |
| Que la lámpara sea menor de 11 watts | TRUE | TRUE | FALSE | FALSE |
