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;
  };
}

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

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

BCD tables only load in the browser

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().

Див. також