Метод includes() визначає чи може один рядок бути знайденим всередині іншого, повертаючи true або false за необхідності.
Синтаксис
str.includes(searchString[, position])
Параметри
searchString- Рядок для пошуку всередині вхідного рядка.
positionOptional- Позиція всередині рядка, з якого буде почато пошук
searchString. (за замовчуванням 0).
Значення, що повертається
true якщо шуканий рядок знайдений, де-завгодно всередині даної строки; в іншому випадку, false якщо не знайдений.
Опис
Цей метод дозволяє визначити чи знаходиться один рядок всередині іншого.
Чутливість до регістру
Метод includes() є чутливим до регістру. Для прикладу, наступний вираз поверне false:
'Blue Whale'.includes('blue'); // returns false
Приклади
Використання includes()
var str = 'To be, or not to be, that is the question.';
console.log(str.includes('To be')); // true
console.log(str.includes('question')); // true
console.log(str.includes('nonexistent')); // false
console.log(str.includes('To be', 1)); // false
console.log(str.includes('TO BE')); // false
Поліфіл
Цей метод був доданий до специфікації ECMAScript 2015 і може бути недоступним у всіх реалізаціях JavaScript. Однак, ви можете легко розробити поліфіл для цього методу:
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}
Специфікації
| Специфікація | Статус | Коментар |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'String.prototype.includes' in that specification. |
Standard | Initial definition. |
| ECMAScript Latest Draft (ECMA-262) The definition of 'String.prototype.includes' in that specification. |
Draft |
Сумісність з браузерами
Таблиця сумісності на цій сторінці, згенерована з структурованих даних. Якщо ви хочете внести свій вклад в дані, будь ласка, ознайомтесь з https://github.com/mdn/browser-compat-data і надішлість нам запит на додавання даних.
| Desktop | Mobile | Server | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Basic support | Chrome Full support 41 | Edge Full support Yes | Firefox
Full support
40
| IE No support No | Opera Full support Yes | Safari Full support 9 | WebView Android Full support Yes | Chrome Android Full support Yes | Edge Mobile Full support Yes | Firefox Android
Full support
40
| Opera Android Full support Yes | Safari iOS Full support 9 | Samsung Internet Android Full support Yes | nodejs 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().