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 colors
array contém 'red'
:
const colors = ['red', 'green', 'blue'];
const result = colors.includes('red');
console.log(result); // true
Linguagem 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()
etoLocaleLowerCase()
. - 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); // true
Linguagem de código: JavaScript ( javascript )
Neste exemplo, a colors
matriz não contém 'green'
but 'GREEN'
.
Primeiro, o map()
método coloca todos os elementos do colors
array em letras minúsculas e retorna um novo array. Então, o includes()
método retorna true
porque 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); // false
Linguagem 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); // true
Linguagem de código: JavaScript ( javascript )
Neste exemplo, o list.includes(john)
retorno true
é porque o list
array contém a john
referê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); // false
Linguagem 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 list
array. Porém, o includes()
método retorna false
porque list
nã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 true
se os objetos first
e second
tiverem 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); // true
Linguagem 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); // true
Linguagem 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 earray.some()
método para verificar se a matriz contém o objeto.