DEV Community

angelo rogerio rubin
angelo rogerio rubin

Posted on

ECMAScript 2016/2017 Dicas - Array.prototype.includes

includes
Olá pessoal,

Este é o primeiro de uma série de vários artigos que pretendo escrever sobre as novas implementações do ECMAScript 2016/2017.

O foco principal é aperfeiçoar meus conhecimentos em Javascript e ao mesmo tempo compartilhar todo o conhecimento adquirido com vocês.

Pretendo ser bem didático quanto aos exemplos como forma de ajudar principalmente os que estão iniciando na linguagem.

Bem, chega de papo e vamos ao que interessa!

A partir de agora chamarei o ECMAScript 2016/2017 de ES16/17 para facilitar nossas vidas.

O ES16/17 nos trouxe um novo método chamado includes.

Não confundir com o método includes do objeto global String.

O método includes está disponível no objeto global Array. Caso você não saiba do que estou falando pode ver mais sobre o objeto global Array aqui.

A assinatura do método

Primeiramente vamos dar uma olhada na assinatura do método que é a seguinte:

Array.prototype.includes(value : any) : boolean

Como podemos observar, este método aceita qualquer tipo (value: any) como valor e nos retorna um booleano como resposta.

Vejamos um exemplo:

No primeiro exemplo podemos notar que o método includes recebe o valor (3), percorre o array e verifica se encontra o valor dentro do array, caso o método encontre o valor ele nos retorna verdadeiro (true) e caso não encontre nos retorna falso (false).

No segundo exemplo ele recebe um número (4) que não existe no array e como é de se esperar nos retorna falso (false).

Simples e objetivo !

O curioso é que o método includes() é similar a um método que já existe no Javascript, este método é conhecido como indexOf():

Mas você pode estar se perguntando, se já existe um método que resolve o problema, para que criaram outro?

Na verdade existem pequenas diferenças entre eles e a primeira delas é que o método indexOf() não verifica NaN (propriedade do objeto global), já o método includes possui esse tipo de verificação.

Vejamos um exemplo:

A segunda diferença é que o método includes() não diferencia -0 e +0, pois o Javascript tenta minimizar isto nos dando a impressão que só existe um zero, quando na verdade existem dois zeros (-0 e +0).

Como não pretendo me aprofundar na explicação deste tópico do (zero negativo) em particular para não deixar o artigo muito extenso, deixo um link para vocês aqui onde explica em detalhes o problema.

Vejamos um exemplo:

No exemplo acima vemos que o método includes() trata o (-0) e o (+0) como iguais, quando na verdade eles não são.

É isso ai pessoal!

Espero que tenha ficado claro o uso do método includes e que vocês tenham gostado do artigo.

Qualquer dúvida, crítica ou sugestão serão bem vindas.

Spoiler : No próximo artigo pretendo falar um pouco sobre uma novidade muito interessante do ES16/17 que são os operadores de exponenciação.

Até breve e espero por vocês!

Top comments (0)