我的页面上有这个 array.prototype,它似乎占用了大量处理时间:
Array.prototype.findInArray = function(searchStr) {
var returnArray = false;
for (i=0; i<this.length; i++) {
if (typeof(searchStr) == 'function') {
if (searchStr.test(this[i])) {
if (!returnArray) { returnArray = [] }
returnArray.push(i);
}
} else {
var regexp = new RegExp(".*" + searchStr + ".*");
if (this[i].match(regexp)) {
if (!returnArray) { returnArray = [] }
returnArray.push(i);
}
}
}
return returnArray;
}
最佳答案
首先,您知道您不必在两边都有“.*”,对吧?默认情况下,正则表达式将匹配字符串内的任何位置。其次,如果您只是搜索常量字符串,并且不需要使用正则表达式提供的任何高级功能,那么使用 .indexOf()
肯定会更快。另外,这样您就不必担心转义具有特殊含义的字符。
关于javascript - 在大循环 : . indexOf(str) 或 .match(regex) 中使用什么具有更高的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1008364/