JavaScript的includes()函数及兼容性方案
by 毛三胖 on 2018年02月24日
阅:308赞:7

includes()

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

演示

说明

String.prototype.includes()函数用来判定主字符串中是否包含参数子串,并返回true或false值。

在进行字符串操作中,经常会用到两个字符串是否包含的判定。也就经常有人会问在JavaScript中是否包括一个contains()函数(象java语言一样),实际上在早期JavaScript是没有contains()或类似函数的。而直到ECMAScript 2015 (6th Edition, ECMA-262)才有了includes()的初始定义。

includes语法如下:

str.includes(searchString[, position])

includes接收两个参数,第一个参数,searchString就是要搜索的子串,是必选参数。第二个参数,position是可选参数,表示搜索的起始位置,缺省为0。

兼容性方案

String.prototype.includes()函数的浏览器兼容性目前还不是太好,IE浏览器完全不支持此函数,火狐浏览器小于48的版本也不支持。因此在产品环境下,我们只能使用兼容性方案。

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

可以看出兼容性方案在不支持的情况下,给出了主要利用indexOf()函数的判定方法。

测试

从演示程序中输出的结果来看,includes()函数是大小写敏感的,使用兼容性方案后,演示程序在IE浏览器下也能输出正确结果。

$ 热门标签
$ 贴士
简单是稳定的前提。 -Edsger Dijkstra
$ 声明
本站所有代码及文字都是作者精心汇编整理而成,转载代码及文字请明确注明出处和作者名称。