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!

Image of Datadog

Master Mobile Monitoring for iOS Apps

Monitor your app’s health with real-time insights into crash-free rates, start times, and more. Optimize performance and prevent user churn by addressing critical issues like app hangs, and ANRs. Learn how to keep your iOS app running smoothly across all devices by downloading this eBook.

Get The eBook

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay