在chrome中工作时,string.contains()不存在

时间:2013-10-05 09:51:56

标签: javascript google-chrome

我有一个代码:

var valid = viewName.contains('/');

在firefox浏览器中工作正常。但在Chrome中它是undefined。为什么会这样? Chrome没有这样的字符串方法吗?

使用indexOf代替contains是否可以,所有浏览器是否都支持它?

4 个答案:

答案 0 :(得分:39)

Browser compatibility of String.contains()

String.indexOf()是我使用的,它会正常工作。

  var strIndex = viewName.indexOf('/');
  if(strIndex == -1) {
     //string not found
  } else {
    //string found
  }

但是,如果您想要contains()功能,可以将其添加到String,如下所示:

 if(!('contains' in String.prototype)) {
       String.prototype.contains = function(str, startIndex) {
                return -1 !== String.prototype.indexOf.call(this, str, startIndex);
       };
 }

var valid = viewName.contains('/');
if(valid) {
  //string found
} else {
  //string not found
}

答案 1 :(得分:5)

默认情况下,现在在Firefox和Chrome中支持此功能。如果您在此处寻找最新答案,则可以查看原因和新方法名称(String.includeshere

尝试:

yourString.includes('searchString')

答案 2 :(得分:2)

.contains在FireFox 48中被完全删除,因为文档目前最后更新于2016年7月22日。函数.include执行.contains之前所做的事。

好处:Chrome也支持.include。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes以供参考。

我打算将此作为评论发布,但未注册的人只能写出完整的答案。 (捂脸)

答案 3 :(得分:1)

字符串的contains方法为first added to V8included in Chrome之后为version 30.0.1583.0,但默认情况下处于禁用状态。如果您在chrome://flags/#enable-javascript-harmony启用“实验性JavaScript功能”,则此功能仅可用