有效地限制...循环到特定的属性键

时间:2016-02-06 07:03:01

标签: javascript

我有一个循环遍历包含预编译正则表达式模式的嵌套对象的函数。它根据字符串检查每个模式,如果匹配,则使用" abriv"进行替换。值。

代码有效,但我注意到在调试模式下检查循环时,'正则表达式'并且' abriv'正在根据字符串检查属性。

如何优化此循环以仅循环显示正则表达式'当它为......进行第二次时的价值?我尝试使用像'prop.regex'这样的访问器。在循环中但似乎不起作用。



var car = /(\bauto\b|\bvehicle\b|\bride\b)/ig
var bus = /(\bcoach\b)/ig
var train = /(\bexpress\b|\brail\b)/ig

var regexList = {
  car: {
    abriv: 'car',
    regex: car
  },
  bus: {
    abriv: 'bus',
    regex: bus
  },
  train: {
    abriv: 'train',
    regex: train
  }
}

var testString = "I drove the auto";

function replacer(text) {
  for (var regex in regexList) {
    var obj = regexList[regex];
    for (var prop in obj) {

      if (obj.regex.test(text) === true) {
        this.text = text.replace(obj.regex, obj.abriv);
        return this;
      }
    }

  }
}

replacer(testString);




1 个答案:

答案 0 :(得分:1)

我认为你甚至不需要你的第二次循环。

function replacer(text) {
  for (var regex in regexList) {
    var obj = regexList[regex];
      if (obj.regex.test(text) === true) {
        this.text = text.replace(obj.regex, obj.abriv);
        return this;
      }
  }
}

这里缺少什么东西吗?