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!

Sentry image

Make it make sense

Only get the information you need to fix your code that’s broken with Sentry.

Start debugging →

Top comments (0)

Feature flag article image

Create a feature flag in your IDE in 5 minutes with LaunchDarkly’s MCP server 🏁

How to create, evaluate, and modify flags from within your IDE or AI client using natural language with LaunchDarkly's new MCP server. Follow along with this tutorial for step by step instructions.

Read full post

👋 Kindness is contagious

Take a moment to explore this thoughtful article, beloved by the supportive DEV Community. Coders of every background are invited to share and elevate our collective know-how.

A heartfelt "thank you" can brighten someone's day—leave your appreciation below!

On DEV, sharing knowledge smooths our journey and tightens our community bonds. Enjoyed this? A quick thank you to the author is hugely appreciated.

Okay