JavaScript Array some: verifique se pelo menos um elemento do array passa no teste

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 forloop, 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:

trueLinguagem de código:  JavaScript  ( javascript )

Como funciona:

  • Primeiro, declare uma variável de flag lessThanFivee defina seu valor como false.
  • Segundo, itere sobre os elementos. Se um elemento for menor que 5, defina o sinalizador como truee saia imediatamente do loop usando a breakinstrução.

O código funciona conforme o esperado. No entanto, é bastante detalhado.

O Arraytipo 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 callbackargumento

A some()função executa a callbackfunção uma vez para cada elemento do array até encontrar aquele onde a callbackfunção retorna a true. O some()método retorna imediatamente truee não avalia os elementos restantes.

Se nenhum elemento fizer com que o callback()retorne true, o some()método retornará false.

A callbackfunçã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 arrayarray que some()foi chamado.

2) O thisArgargumento

O thisArgargumento é opcional. Se você passar the thisArgpara o método, poderá usar the thisArgcomo thisvalor dentro da callbackfunçã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
falseLinguagem 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 marksmatriz 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:

trueLinguagem 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 do thisvalor.

Observe que se você usar a função de seta neste exemplo, o thisvalor dentro da função de retorno de chamada não será vinculado ao rangeobjeto, mas ao globalobjeto.

Cuidado: matrizes vazias

Se você chamar o some()método em um array vazio, o resultado será sempre falseindependente 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
falseLinguagem 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.

Deixe um comentário

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