大循环中使用的性能更高:.indexOf(str)或.match(正则表达式)?

Jus*_*Lee 2 javascript regex arrays indexof match

我的页面上有这个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;
        }
Run Code Online (Sandbox Code Playgroud)

new*_*cct 10

首先,你知道你不必在任何一方都有".*",对吧?默认情况下,正则表达式将匹配字符串中的任何位置.其次,如果您只是在搜索常量字符串,并且不需要使用正则表达式提供的任何高级内容,那么它的使用速度肯定更快.indexOf().除此之外,您不必担心转义具有特殊含义的字符.

  • +1我无法想象正则表达式如何击败indexOf.如果您不需要正则表达式,请不要使用正则表达式. (5认同)