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!

Heroku

Built for developers, by developers.

Whether you're building a simple prototype or a business-critical product, Heroku's fully-managed platform gives you the simplest path to delivering apps quickly — using the tools and languages you already love!

Learn More

Top comments (0)

Image of Datadog

Get the real story behind DevSecOps

Explore data from thousands of apps to uncover how container image size, deployment frequency, and runtime context affect real-world security. Discover seven key insights that can help you build and ship more secure software.

Read the Report

👋 Kindness is contagious

Dive into this thoughtful article, cherished within the supportive DEV Community. Coders of every background are encouraged to share and grow our collective expertise.

A genuine "thank you" can brighten someone’s day—drop your appreciation in the comments below!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found value here? A quick thank you to the author makes a big difference.

Okay