String.prototype.includes()

Метод includes() визначає чи може один рядок бути знайденим всередині іншого, повертаючи, відповідно, true або false.

Синтаксис

str.includes(searchString[, position])

Параметри

searchString
Рядок для пошуку всередині str.
position Optional
Позиція всередині рядка, з якої буде почато пошук рядка searchString. (За замовчуванням 0).

Значення, що повертається

true, якщо шуканий рядок знайдено де-завгодно всередині наданого рядка; інакше, false.

Опис

Цей метод дозволяє визначити чи знаходиться один рядок всередині іншого.

Чутливість до регістру

Метод includes() є чутливим до регістру. Для прикладу, наступний вираз поверне false:

'Синій кит'.includes('синій'); // вертає false

Приклади

Використання includes()

var str = 'Питання в тому: бути чи не бути.';

console.log(str.includes('Питання'));     // true
console.log(str.includes('бути'));        // true
console.log(str.includes('неіснуючий'));  // false
console.log(str.includes('Питання', 1));  // false
console.log(str.includes('ПИТАННЯ'));     // false
console.log(str.includes(''));            // true

Поліфіл

Цей метод був доданий до специфікації ECMAScript 2015 і може бути недоступним у всіх реалізаціях JavaScript.

Однак, ви можете легко розробити поліфіл для цього методу:

if (!String.prototype.includes) {
  String.prototype.includes = function(search, start) {
    'use strict';
   
    if (search instanceof RegExp) {
      throw TypeError('first argument must not be a RegExp');
    } 
    if (start === undefined) { start = 0; }
    return this.indexOf(search, start) !== -1;
  };
}

Специфікації

Специфікація
ECMAScript (ECMA-262)
The definition of 'String.prototype.includes' in that specification.

Сумісність з веб-переглядачами

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 28Safari Full support 9WebView Android Full support 41Chrome Android Full support 41Firefox 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 28Safari iOS Full support 9Samsung Internet Android Full support 4.0nodejs 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

У Firefox 18-39 назва цього методу була contains(). Він був перейменований на includes() у bug 1102219 у зв'язку з наступною причиною:

Повідомлялося, що деякі веб-сайти, які використовують MooTools 1.2 не працюють на Firefox 17. Ця версія MooTools перевіряла чи існує метод String.prototype.contains() та, якщо ні, то MooTools додає власну функцію.

З введенням цієї функції у Firefox 17, поведінка цієї перевірки змінювалася таким чином, що ставала причиною непрацездатності коду на основі реалізації методу String.prototype.contains() від MooTools. В результаті реалізація була відключена у Firefox 17, а String.prototype.contains() був доступний на одну версію пізніше, у Firefox 18, коли налагодження зв'язків з MooTools призвело до випуску MooTools версії 1.2.6.

MooTools 1.3 примусово запускає власну версію методу String.prototype.contains(), тож, веб-сайти, що покладаються на неї, не повинні ламатися. Однак, зауважте, що сигнатура цього методу відразняється для MooTools 1.3 і ECMAScript 2015 (на місці другого аргумента). Пізніше, MooTools 1.5+ змінив сігнатуру у відповідності до стандарту ES2015.

У Firefox 48 метод String.prototype.contains() було видалено. Використовуйте тільки String.prototype.includes().

Див. також