JavaScript Array a cada: determinando se todos os elementos do array passam em um teste

Resumo : neste tutorial, você aprenderá como verificar se todos os elementos do array passam em um teste usando o every()método JavaScript Array.

Verificando elementos do array usando o forloop

Às vezes, você precisa testar se cada elemento de uma matriz  satisfaz uma condição especificada.

Normalmente, você usa um   for loop para iterar todos os elementos e verificar cada elemento individual em relação à condição. Suponha que você tenha um array numberscom três elementos:

let numbers = [1, 3, 5];Linguagem de código:  JavaScript  ( javascript )

O código a seguir verifica se cada elemento do numbersarray é maior que zero:

let numbers = [1, 3, 5];
let result = true;
for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] <= 0) {
        result = false;
        break;
    }
}
console.log(result);Linguagem de código:  JavaScript  ( javascript )

Saída:

trueLinguagem de código:  JavaScript  ( javascript )

Como funciona:

  • Primeiro, inicialize a   resultvariável para true.
  • Segundo, itere sobre os elementos do numbersarray e verifique se cada elemento é menor ou igual a zero. Se for o caso, defina a resultvariável como falsee encerre o loop imediatamente usando a break instrução. Caso nenhum elemento seja menor ou igual a zero, o valor da resultvariável permanece   true.

Este código é simples e direto. No entanto, é bastante detalhado.

O tipo JavaScript Arrayfornece o every()método que permite verificar se cada elemento de um array passa no teste de uma forma mais curta e limpa.

Introdução ao every()método JavaScript Array

A partir do ES5,  o tipo JavaScript Array fornece um método every()que testa cada elemento em um array.

O exemplo a seguir usa o every()para verificar se cada elemento da matriz de números é maior que zero:

let numbers = [1, 3, 5];
let result = numbers.every(function (e) {
    return e > 0;
});

console.log(result);Linguagem de código:  JavaScript  ( javascript )

Saída:

trueLinguagem de código:  JavaScript  ( javascript )

Ao usar as arrowfunctions do ES6 , o código pode ser ainda mais curto:

let numbers = [1, 3, 5];

let result = numbers.every( e  => e > 0);

console.log(result);Linguagem de código:  JavaScript  ( javascript )

Também é muito mais limpo, não é?

O seguinte ilustra a sintaxe do every()método.

arrayObject.every(callback[, thisArg])Linguagem de código:  CSS  ( css )

O every()método aceita dois argumentos nomeados: callbacke thisArg.

1) O callbackargumento

A callbacké uma função que testa cada elemento do array. A callback()função tem o seguinte formato:

function callback(currentElement, index, array){
   //...
}Linguagem de código:  JavaScript  ( javascript )

A callback()função leva três argumentos:

  • Primeiro, currentElementé o elemento atual que está sendo processado.
  • Em segundo lugar, the indexé o índice do currentElement.
  • Terceiro, arrayé o array ao qual o every()método foi chamado.

O currentElementargumento é obrigatório, enquanto os argumentos indexe arraysão opcionais.

2) O thisArg argumento

O thisArg argumento do every()método é opcional. Se você passar o thisArg argumento para o método, o thisvalor dentro da callbackfunção fará referência ao thisArgargumento.

O every()método retorna truese a callbackfunção retornar um valor verdadeiro para cada elemento da matriz; caso contrário, ele retorna false.

Observe que o every()método executa a callback()função em cada elemento do array até encontrar aquele que causa o callback()retorno de um valor falso.

Em outras palavras, every()irá parar de chamar a callback()função e retornar falsequando houver um elemento da matriz que faz com callback()que um valor falso seja retornado.

Vamos dar uma olhada em mais alguns exemplos de uso do every()método.

Mais every()exemplos de métodos JavaScript Array

O exemplo a seguir testa se todos os elementos da matriz são números pares

let numbers = [1, 3, 5];
let isEven = numbers.every(function (e) {
    return e % 2 == 0;
});

console.log(isEven);Linguagem de código:  JavaScript  ( javascript )

Saída:

falseLinguagem de código:  JavaScript  ( javascript )

Por outro lado, o exemplo a seguir testa se todos os elementos da matriz são números ímpares.

let numbers = [1, 3, 5];

let isOdd = numbers.every(function (e) {
    return Math.abs(e % 2) == 1;
});

console.log(isOdd);Linguagem de código:  JavaScript  ( javascript )

Saída:

trueLinguagem de código:  JavaScript  ( javascript )

Suponha que você tenha um objeto com duas propriedades: mine max:

let range = {
    min: 0,
    mas: 10
};Linguagem de código:  JavaScript  ( javascript )

O exemplo a seguir testa se todos os elementos da numbersmatriz estão no intervalo especificado pelo min e maxdo range objeto.

let numbers = [1, 3, 5];

let range = {
    min: 0,
    max: 10
};

let isInRange = numbers.every(function (e) {
    return e >= this.min && e <= this.max;
}, range);Linguagem de código:  JavaScript  ( javascript )

Saída:

trueLinguagem de código:  JavaScript  ( javascript )

Neste exemplo, passamos o rangeobjeto para o every()método como segundo argumento. E dentro da callback()função, referenciamos o rangeobjeto usando a thispalavra-chave.

Cuidado: matrizes vazias

Se você chamar o every()método em um array vazio, o método sempre retornará truepara qualquer condição. Por exemplo:

let gtZero = [].every(e => e > 0); // any condition
let ltZero = [].every(e => e < 0); // any condition

console.log('gtZero:', gtZero);
console.log('ltZero:', ltZero);Linguagem de código:  JavaScript  ( javascript )

Saída:

gtZero: true
ltZero: trueLinguagem de código:  JavaScript  ( javascript )

Neste tutorial, você aprendeu como usar o every()método JavaScript Array para testar se todos os elementos em um array passam no teste fornecido por uma função de teste.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *