Array.prototype.every()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
El método every()
de las instancias de Array
prueba si todos los elementos del arreglo pasan la prueba implementada por la función proporcionada. Devuelve un valor booleano.
Pruébalo
Sintaxis
every(callbackFn)
every(callbackFn, thisArg)
Parámetros
callbackFn
-
Una función que se ejecuta para cada elemento del arreglo. Debe devolver un valor truthy para indicar que el elemento pasa la prueba y un valor falsy en caso contrario. La función se llama con los siguientes argumentos:
thisArg
Opcional-
Un valor para usar como
this
al ejecutarcallbackFn
. Ver métodos iterativos.
Valor de retorno
true
a menos que callbackFn
devuelva un valor falsy para un elemento del arreglo, en cuyo caso se devuelve false
inmediatamente.
Descripción
El método every()
es un método iterativo. Llama a una función callbackFn
proporcionada una vez por cada elemento de un arreglo, hasta que callbackFn
devuelva un valor falsy. Si se encuentra dicho elemento, every()
devuelve inmediatamente false
y deja de iterar por el arreglo. De lo contrario, si callbackFn
devuelve un valor truthy para todos los elementos, every()
devuelve true
. Lea la sección métodos iterativos para obtener más información sobre cómo funcionan estos métodos en general.
every
actúa como el cuantificador "para todos" en matemáticas. En particular, para un arreglo vacío, devuelve true
. (Es vaciamente cierto que todos los elementos del conjunto vacío satisfacen cualquier condición dada).
callbackFn
se invoca únicamente para índices de arreglos que tienen valores asignados. No se invoca para espacios vacíos en arreglos dispersos.
El método every()
es genérico. Solo espera que el valor this
tenga una propiedad length
y propiedades con claves enteras.
Ejemplos
Probar el tamaño de todos los elementos del arreglo
El siguiente ejemplo prueba si todos los elementos del arreglo son 10 o más.
function isBigEnough(element, index, array) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // false
[12, 54, 18, 130, 44].every(isBigEnough); // true
Comprueba si un arreglo es un subconjunto de otro arreglo
El siguiente ejemplo prueba si todos los elementos de un arreglo están presentes en otro arreglo.
const isSubset = (array1, array2) =>
array2.every((element) => array1.includes(element));
console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 7, 6])); // true
console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 8, 7])); // false
Usando el tercer argumento de callbackFn
El argumento array
es útil si desea acceder a otro elemento del arreglo. El siguiente ejemplo primero utiliza filter()
para extraer los valores positivos y luego utiliza every()
para verificar si el arreglo es estrictamente creciente.
const numbers = [-2, 4, -8, 16, -32];
const isIncreasing = numbers
.filter((num) => num > 0)
.every((num, idx, arr) => {
// Sin el argumento arr, no hay forma de acceder fácilmente al
// arreglo intermedio sin guardarla en una variable.
if (idx === 0) return true;
return num > arr[idx - 1];
});
console.log(isIncreasing); // true
Uso de every() en arreglos dispersos
every()
no ejecutará su predicado en espacios vacíos.
console.log([1, , 3].every((x) => x !== undefined)); // true
console.log([2, , 2].every((x) => x === 2)); // true
Llamar a every() en objetos que no son arreglos
El método every()
lee la propiedad length
de this
y luego accede a cada propiedad con una clave entera no negativa menor que length
hasta que se haya accedido a todas o callbackFn
devuelva false
.
const arrayLike = {
length: 3,
0: "a",
1: "b",
2: "c",
3: 345, // ignorado por every() ya que la longitud es 3
};
console.log(
Array.prototype.every.call(arrayLike, (x) => typeof x === "string"),
); // true
Especificaciones
Specification |
---|
ECMAScript Language Specification # sec-array.prototype.every |
Compatibilidad con navegadores
BCD tables only load in the browser