我有我的网页上这array.prototype和它似乎是占用了大量的处理时间:大循环中使用的性能更高:.indexOf(str)或.match(regex)?
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会更快,但测试比猜测更好。 – 2009-06-17 17:10:38
不要忘记,每个环境都可以不同。在Firefox中停留一段时间,您可能会获得与Opera,Chrome或Safari不同的结果。我会在Internet Explorer中记录它的时间,因为它是这个软件包的缺点 - 在IE中快速使用它,而且在其他地方应该足够快。 – Nosredna 2009-06-17 17:13:34