我有一个代码:
var valid = viewName.contains('/');
在firefox浏览器中工作正常。但在Chrome中它是undefined
。为什么会这样? Chrome没有这样的字符串方法吗?
使用indexOf
代替contains
是否可以,所有浏览器是否都支持它?
答案 0 :(得分:39)
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.includes
)here。
尝试:
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 V8,included in Chrome之后为version 30.0.1583.0,但默认情况下处于禁用状态。如果您在chrome://flags/#enable-javascript-harmony
启用“实验性JavaScript功能”,则此功能仅可用。