javascript - 在大循环 : . indexOf(str) 或 .match(regex) 中使用什么具有更高的性能?

标签 javascript regex arrays match indexof

我的页面上有这个 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/

相关文章:

javascript - 将导航栏向下滚动到顶部后固定到顶部

JavaScript 正则表达式 : Find a tag and get some attribute values

javascript - JQuery - 如何 : Duplicate <li> and put it to the end of the <ul>

python - 使用 python 中的正则表达式检查表达式是否有效

javascript - 正则表达式不允许单引号和双引号

ios - 如何使用 NSUserDefaults 与包含应用程序共享数据? - 今天扩展小部件

php - 获取 php 数组中的下一个值

javascript - lodash 的过滤函数是否带上下文?

php - Javascript/HTML 表单字段命名问题

javascript - 在 Angular.js 中使用工厂和 Controller 之间的逻辑