String.prototype.includes()

O método includes() determina se uma string pode ser encontrada dentro de outra string, retornando true ou false, conforme apropriado.

Sintaxe

str.includes(searchString[, position])

Parâmetros

searchString
A string que será pesquisada dentro desta string.
position
Opcional. O indíce da posição da string que iniciará a busca; padrão 0.

Descrição

Este método permite determinar se uma string contém outra string.

Case-sensitivity

O método includes() é case sensitive. Por exemplo, a seguinte expressão retorna false:

'Bandeira do Brasil'.includes('brasil'); // returns false

Exemplos

Utilizando includes()

var str = 'Ser, ou não ser, eis a questão.';

console.log(str.includes('Ser'));         // true
console.log(str.includes('questão'));     // true
console.log(str.includes('não existe'));  // false
console.log(str.includes('Ser', 1));      // false
console.log(str.includes('SER'));         // false

Implementação

Este método foi adicionado à especificação ECMAScript 6 e pode não estar disponível em todas as implementações JavaScript. No entanto, você pode facilmente implementar este método:

if (!String.prototype.includes) {
  String.prototype.includes = function() {'use strict';
    return String.prototype.indexOf.apply(this, arguments) !== -1;
  };
}

Especificações

Especificação Status Comentário
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.prototype.includes' in that specification.
Padrão Definição inicial.

Compatibilidade do navegador

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
includesChrome Full support 41Edge Full support 12Firefox Full support 40
Full support 40
No support 18 — 48
Alternate Name
Alternate Name Uses the non-standard name: contains
IE No support NoOpera Full support YesSafari Full support 9WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 40
Full support 40
No support 18 — 48
Alternate Name
Alternate Name Uses the non-standard name: contains
Opera Android Full support YesSafari iOS Full support 9Samsung Internet Android Full support Yesnodejs Full support 4.0.0

Legend

Full support  
Full support
No support  
No support
Uses a non-standard name.
Uses a non-standard name.

String.prototype.contains

No Firefox 18 - 39, o nome deste método era contains(). Ele foi renomeado para includes() no bug 1102219 devido ao seguinte motivo:

Foi reportado que alguns websites que utilizam MooTools 1.2 não funcionavam no Firefox 17. Esta versão do MooTools checa se String.prototype.contains() existe e, se não existir,  MooTools adiciona sua própria função. Com a implementação desta função no Firefox 17, o comportamento desta validação mudou de uma forma que códigos baseados na implementação da função String.prototype.contains() do MooTools parassem de funcionar. Como resultado, esta mudança foi desabilitada no Firefox 17 e String.prototype.contains() foi disponibilizada na versão seguinte, no Firefox 18.

MooTools 1.3 força sua própria versão do String.prototype.contains(), portanto websites baseados nela não devem parar de funcionar. No entanto, você deve notar que a assinatura do MooTools 1.3 e a assinatura ECMAScript 6 diferem (no segundo argumento). Posteriormente, MooTools 1.5+ mudou sua assinatura para o padrão ES6.

Veja também