通常我会期望一个String.contains()
方法,但似乎没有。
检查这个的合理方法是什么?
以下列出了当前的可能性:
1.(ES6) includes
- 去回答
var string = "foo",
substring = "oo";
string.includes(substring);
2. ES5 和更老的indexOf
var string = "foo",
substring = "oo";
string.indexOf(substring) !== -1;
String.prototype.indexOf
返回另一个字符串中字符串的位置。如果未找到,则返回-1
。
3. search
- 去回答
var string = "foo",
expr = /oo/;
string.search(expr);
4. lodash 包括 - 去回答
var string = "foo",
substring = "oo";
_.includes(string, substring);
5. RegExp - 去回答
var string = "foo",
expr = /oo/; // no quotes here
expr.test(string);
6. 匹配 - 去回答
var string = "foo",
expr = /oo/;
string.match(expr);
性能测试表明,如果速度很重要, indexOf
可能是最佳选择。
您可以使用以下语句轻松地将contains
方法添加到 String:
String.prototype.contains = function(it) { return this.indexOf(it) != -1; };
注意:请参阅以下注释,了解不使用此参数的有效参数。我的建议:用你自己的判断。
或者:
if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }
您的代码存在的问题是 JavaScript 区分大小写。你的方法调用
indexof()
应该是
indexOf()
尝试修复它,看看是否有帮助:
if (test.indexOf("title") !=-1) {
alert(elm);
foundLinks++;
}