Arrays: some() e every()

Rafael Cavalcante
2 min readSep 11, 2019

Conforme vamos estudando programação funcional — nesse caso no javascript — sempre nos deparamos pelos métodos map, reduce e filter. Apesar de resolverem um problema, nem sempre esses métodos são os ideais para uma necessidade específica.

Este artigo vem pra complementar os três métodos citados acima e até o forEach.

Some

O método some() passa por todos items do array verificando se um ou mais itens correspondem a uma função de callback e retornam true ou false. Vamos ao exemplo.

Vamos considerar que temos um array com alguns produtos.

const myProducts = [
{
name: 'Carrot',
type: 'vegetable',
organic: true
}, {
name: 'Milk',
type: 'dairy',
organic: true
}
];

Agora vamos verificar se algum dos itens deste array possui algum vegetal usando o método forEach.

let productsHaveVegetables = false;myProducts.forEach(function(item) {
if (item.type === 'vegetable') {
productsHaveVegetables = true;
}
});
console.log(productsHaveVegetables); // true

Uma outra ousada opção seria usar um reduce e checar se o array gerado pelo mesmo tem algum item.

Funciona? Funciona. É o ideal? Não.

Usando o método some(), essa tarefa fica muito mais fácil:

let productsHaveVegetables = myProducts.some(function(item) {
return item.type === 'vegetable';
});
console.log(productsHaveVegetables); // true

Um exemplo usando arrow functions:

const productsHaveVegetables = myProducts.some(item => item.type === 'vegetables');console.log(productsHaveVegetables); // true

Every

Este método funciona exatamente igual ao some(), mas somente retornará true se todos os itens do array corresponderem a função de callback passada como parâmetro.

const isEverythingOrganic = myProducts.every(item => item.organic);console.log(isEverythingOrganic); // true

Referências

--

--