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

js
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:

element

El elemento actual que se está procesando en el arreglo.

index

El índice del elemento actual que se está procesando en el arreglo.

array

El arreglo every() desde el que fue llamada.

thisArg Opcional

Un valor para usar como this al ejecutar callbackFn. 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.

js
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.

js
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.

js
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.

js
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.

js
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

Véase también