includes()
方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。
语法
str.includes(searchString[, position])
参数
-
searchString
- 要在此字符串中搜索的字符串。
-
position
- 可选。从当前字符串的哪个索引位置开始搜寻子字符串,默认值为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 6 标准中,但未必在所有的 JavaScript 实现中都可以使用。然而,你可以轻松地 polyfill 这个方法:
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) String.prototype.includes |
Standard | 初始定义 |
ECMAScript Latest Draft (ECMA-262) String.prototype.includes |
Draft |
浏览器兼容性
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
includes |
Chrome Full support 41 | Edge Full support 12 | 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 41 | 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()
。由于下面的理由,在bug 1102219中,它被重命名为 includes()
:
据报道,在Firefox 17上,一些使用 MooTools 1.2的网站会崩溃掉。这个版本的MooTools会检查函数 String.prototype.contains()
是否存在,如果不存在的话,MooTools就添加它自己的函数。通过在Firefox 17中引入这个函数,检查更改的行为在一定程度上导致了基于MooTools的 String.prototype.contains()
函数的代码实现中断。结果是,当 MooTools的拓展 导致 MooTools 1.2.6 版本的发布,此实现在Firefox 17中不可用和 String.prototype.contains()
在随后一个版本Firefox 18上是可用的。
MooTools 1.3会强制使用它自己版本的函数 String.prototype.contains()
,因此,依赖它的网站不会崩溃掉。然而,你应该注意此方法在 MooTools 1.3 签名和ECMAScript 6 签名中的不同(在第二个参数)。后来,为了与ES6标准一致在MooTools 1.5版本及以上更改了签名。