Resumo : neste tutorial, você aprenderá como usar o some()
método JavaScript Array para verificar se pelo menos um elemento do array passa em um teste.
Introdução ao some()
método JavaScript Array
Às vezes, você deseja verificar se um array possui pelo menos um elemento que atenda a uma condição especificada.
Por exemplo, para verificar se o seguinte array possui pelo menos um elemento menor que 5:
let marks = [ 4, 5, 7, 9, 10, 3 ];
Linguagem de código: JavaScript ( javascript )
…você normalmente usa um for
loop, como este:
let marks = [ 4, 5, 7, 9, 10, 3 ];
let lessThanFive = false;
for (let index = 0; index < marks.length; index++) {
if (marks[index] < 5) {
lessThanFive = true;
break;
}
}
console.log(lessThanFive);
Linguagem de código: JavaScript ( javascript )
Saída:
true
Linguagem de código: JavaScript ( javascript )
Como funciona:
- Primeiro, declare uma variável de flag
lessThanFive
e defina seu valor comofalse
. - Segundo, itere sobre os elementos. Se um elemento for menor que 5, defina o sinalizador como
true
e saia imediatamente do loop usando abreak
instrução.
O código funciona conforme o esperado. No entanto, é bastante detalhado.
O Array
tipo fornece um método de instância chamado some()
que permite testar se um array possui pelo menos um elemento que atenda a uma condição.
let marks = [ 4, 5, 7, 9, 10, 3 ];
lessThanFive = marks.some(function(e) {
return e < 5;
});
console.log(lessThanFive);
Linguagem de código: JavaScript ( javascript )
Saída
true
Linguagem de código: JavaScript ( javascript )
A condição é implementada por meio de uma função de retorno de chamada passada para o some()
método.
Agora, o código é mais curto. Para torná-lo mais expressivo, você pode usar a sintaxe da função de seta no ES6 :
let marks = [ 4, 5, 7, 9, 10, 3 ];
let lessThanFive = marks.some(e => e < 5);
console.log(lessThanFive);
Linguagem de código: JavaScript ( javascript )
some()
Sintaxe de matriz JavaScript
O seguinte ilustra a sintaxe do some()
método:
arrayObject.some(callback[, thisArg]);
Linguagem de código: CSS ( css )
O some()
método aceita dois argumentos:
1) O callback
argumento
A some()
função executa a callback
função uma vez para cada elemento do array até encontrar aquele onde a callback
função retorna a true
. O some()
método retorna imediatamente true
e não avalia os elementos restantes.
Se nenhum elemento fizer com que o callback()
retorne true
, o some()
método retornará false
.
A callback
função leva três argumentos:
function callback(currentElement [[, currentIndex], array]){ // ...}
Linguagem de código: JavaScript ( javascript )
- O
currentElement
é o elemento atual que está sendo processado na matriz. - O
currentIndex
é o índice do elemento atual que está sendo processado na matriz. - O
array
array quesome()
foi chamado.
2) O thisArg
argumento
O thisArg
argumento é opcional. Se você passar the thisArg
para o método, poderá usar the thisArg
como this
valor dentro da callback
função.
some()
Exemplos de matriz JavaScript
Vejamos mais alguns exemplos de uso do some()
método.
1) Verifique se existe um elemento no array
A exists()
função a seguir usa o some()
método para verificar se existe um valor em uma matriz:
function exists(value, array) {
return array.some(e => e === value);
}
let marks = [4, 5, 7, 9, 10, 2];
console.log(exists(4, marks));
console.log(exists(11, marks));
Linguagem de código: JavaScript ( javascript )
Saída:
true
false
Linguagem de código: JavaScript ( javascript )
2) Verifique se um array possui um elemento que está em um intervalo
O exemplo a seguir mostra como verificar se algum número na marks
matriz está no intervalo (8, 10):
let marks = [4, 5, 7, 9, 10, 2];
const range = {
min: 8,
max: 10
};
let result = marks.some(function (e) {
return e >= this.min && e <= this.max;
}, range);
console.log(result);
Linguagem de código: JavaScript ( javascript )
Saída:
true
Linguagem de código: JavaScript ( javascript )
Como funciona.
- Primeiro, defina um objeto de intervalo com propriedades min e max.
- Segundo, chame o
some()
método no objeto array de marcas e passe o retorno de chamada e o objeto range. Como passamos o objeto range como o segundo argumento (thisArg
), podemos referenciá-lo dentro do retorno de chamada por meio dothis
valor.
Observe que se você usar a função de seta neste exemplo, o this
valor dentro da função de retorno de chamada não será vinculado ao range
objeto, mas ao global
objeto.
Cuidado: matrizes vazias
Se você chamar o some()
método em um array vazio, o resultado será sempre false
independente de qualquer condição. Por exemplo:
let result = [].some(e => e > 0);
console.log(result);
result = [].some(e => e <= 0);
console.log(result);
Linguagem de código: JavaScript ( javascript )
Saída:
false
false
Linguagem de código: JavaScript ( javascript )
Neste tutorial, você aprendeu como usar o some()
método JavaScrip Array para testar se um array possui pelo menos um elemento que atende a uma condição.