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 for
loop
À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 numbers
com três elementos:
let numbers = [1, 3, 5];
Linguagem de código: JavaScript ( javascript )
O código a seguir verifica se cada elemento do numbers
array é 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:
true
Linguagem de código: JavaScript ( javascript )
Como funciona:
- Primeiro, inicialize a
result
variável paratrue
. - Segundo, itere sobre os elementos do
numbers
array e verifique se cada elemento é menor ou igual a zero. Se for o caso, defina aresult
variável comofalse
e encerre o loop imediatamente usando abreak
instrução. Caso nenhum elemento seja menor ou igual a zero, o valor daresult
variável permanecetrue
.
Este código é simples e direto. No entanto, é bastante detalhado.
O tipo JavaScript Array
fornece 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:
true
Linguagem 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: callback
e thisArg
.
1) O callback
argumento
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 docurrentElement
. - Terceiro,
array
é o array ao qual oevery()
método foi chamado.
O currentElement
argumento é obrigatório, enquanto os argumentos index
e array
sã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 this
valor dentro da callback
função fará referência ao thisArg
argumento.
O every()
método retorna true
se a callback
funçã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 false
quando 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:
false
Linguagem 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:
true
Linguagem de código: JavaScript ( javascript )
Suponha que você tenha um objeto com duas propriedades: min
e max
:
let range = {
min: 0,
mas: 10
};
Linguagem de código: JavaScript ( javascript )
O exemplo a seguir testa se todos os elementos da numbers
matriz estão no intervalo especificado pelo min
e max
do 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:
true
Linguagem de código: JavaScript ( javascript )
Neste exemplo, passamos o range
objeto para o every()
método como segundo argumento. E dentro da callback()
função, referenciamos o range
objeto usando a this
palavra-chave.
Cuidado: matrizes vazias
Se você chamar o every()
método em um array vazio, o método sempre retornará true
para 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: true
Linguagem 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.