Como verificar se um array contém um valor em Javascript

Resumo : neste tutorial, você aprenderá como verificar se um array contém um valor em JavaScript.

Um valor em JavaScript pode ser primitivo, como um número ou string . Ou pode ser um objeto .

Este tutorial mostra como verificar se um array contém um valor, seja um valor ou objeto primitivo.

1) Verifique se um array contém uma string

Para verificar se um array contém um valor primitivo, você pode usar o método array comoarray.includes()

O exemplo a seguir usa o array.includes()método para verificar se o colorsarray contém 'red':

const colors = ['red', 'green', 'blue'];
const result = colors.includes('red');

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

Se quiser ignorar as letras maiúsculas ao verificar, você pode:

  • Primeiro, retorne um novo array que contém todos os elementos em letras minúsculas usando os métodos map()e toLocaleLowerCase().
  • Em seguida, use o includes()método para verificar.

O exemplo a seguir ilustra as etapas:

const colors = ['Red', 'GREEN', 'Blue'];
const result = colors.map(e => e.toLocaleLowerCase())
                     .includes('green');                          

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

Neste exemplo, a colorsmatriz não contém 'green'but 'GREEN'.

Primeiro, o map()método coloca todos os elementos do colorsarray em letras minúsculas e retorna um novo array. Então, o includes()método retorna trueporque a matriz de resultados contém o elemento 'green'.

2) Verifique se um array contém um número

O exemplo a seguir mostra como usar o includes()método para verificar se um array contém um número:

const ratings = [1,2,3,4,5];

let result = ratings.includes(4); 
console.log(result); // true

result = ratings.includes(6); 
console.log(result); // falseLinguagem de código:  JavaScript  ( javascript )

3) Verifique se um array contém um objeto

O exemplo a seguir usa o includes()método para verificar se um array contém um objeto:

const john = {
    'name': 'John Doe',
    'email': '[email protected]'
};
const jane = {
    'name': 'Jane Doe',
    'email': '[email protected]'
};

const list = [john, jane];
let result = list.includes(john);

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

Neste exemplo, o list.includes(john)retorno trueé porque o listarray contém a johnreferência do objeto.

Na prática, em vez de procurar uma referência, muitas vezes você procura objetos pelos valores de suas propriedades. O exemplo a seguir não funcionará:

const list = [{
    'name': 'John Doe',
    'email': '[email protected]'
}, {
    'name': 'Jane Doe',
    'email': '[email protected]'
}];

let result = list.includes({
    'name': 'John Doe',
    'email': '[email protected]'
});

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

Neste exemplo, o seguinte objeto:

{
    'name': 'John Doe',
    'email': '[email protected]'
}Linguagem de código:  JavaScript  ( javascript )

…parece o primeiro elemento do listarray. Porém, o includes()método retorna falseporque listnão contém uma referência ao objeto pesquisado.

Para verificar se um array contém um objeto, siga estas etapas:

  • Primeiro, crie uma função auxiliar que compare dois objetos por suas propriedades.
  • Segundo, use o array.some()método para localizar o objeto pesquisado por valores de propriedade.

Para comparar objetos por valores de propriedade, use a seguinte função auxiliar:

const isEqual = (first, second) => {
    return JSON.stringify(first) === JSON.stringify(second);
}Linguagem de código:  JavaScript  ( javascript )

A isEqual()função retorna truese os objetos firste secondtiverem o mesmo número de propriedades com os mesmos valores.

E a limitação da isEqual()função é que a ordem das propriedades dos objetos comparados deve ser a mesma.

Observe que a biblioteca some fornece a função que permite comparar dois objetos por seus valores de propriedade.

Por exemplo, Lodash possui um método _.isEqual() que permite comparar objetos se eles forem iguais com um desempenho melhor do que usar o método JSON.stringify().

O seguinte usa o array.some()método para combinar cada elemento de uma matriz com o objeto pesquisado:

const result = list.some(e => isEqual(e, {
    'name': 'John Doe',
    'email': '[email protected]'
})); 

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

Junte tudo:

const list = [{
    'name': 'John Doe',
    'email': '[email protected]'
}, {
    'name': 'Jane Doe',
    'email': '[email protected]'
}];

const isEqual = (first, second) => {
    return JSON.stringify(first) === JSON.stringify(second);
}

const result = list.some(e => isEqual(e, {
    'name': 'John Doe',
    'email': '[email protected]'
}));

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

Resumo

  • Para valores primitivos, use o array.includes()método para verificar se um array contém um valor.
  • Para objetos, use a isEqual()função auxiliar para comparar objetos e array.some()método para verificar se a matriz contém o objeto.

Deixe um comentário

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