处理字符串上的多个条件

时间:2018-03-19 11:01:08

标签: javascript

我创建了一个函数,它接受一个字符串并替换它的结束子字符串,所以如果字符串以AddFicheEditFiche或Fiche结尾,则应将其替换为{ {1}},以及其他一些条件,这就是我的尝试:

Liste

正如你所看到的那样,有许多不足之处,还有其他办法吗?因为我可能会在以后添加其他条件,并且代码看起来很丑陋,所有这些如果有的话。

2 个答案:

答案 0 :(得分:1)



var replaces = [{
    match: 'AddFiche',
    replace: 'Liste'
  },
  {
    match: 'EditFiche',
    replace: 'Liste'
  },
  {
    match: 'Fiche',
    replace: 'Liste'
  }
]

function _getParentComponent(component) {
  var done = false;
  for (var r of replaces) {
    if (component.endsWith(r.match)) {
      return component.replace(r.match, r.replace);
    }
  }
  if (component === "selection") {
    if ($rootRouter._outlet.previousInstruction.componentType === "import") {
      return "import";
    }
  } else if (component === "result") {
    if ($rootRouter._outlet.previousInstruction.componentType === "selection") {
      return "import";
    }
  } else if (component.startsWith("request")) {
    if ($rootRouter._outlet.previousInstruction.componentType === "dynamicRouting") {
      return "dynamicRouting";
    }
  } else {
    return component;
  }
}
console.log("Input: LoremIpsumFiche");
console.log("Output:",_getParentComponent("LoremIpsumFiche"));




答案 1 :(得分:0)

可以是这个

var ends = ['One', 'Two', 'Wood'];
var words = ['LOne', 'ROnes', 'Two2', 'TwoTwo', 'No Wood', 'Woodless'];
var replaced = "REPLACED";

for(var i = 0; i < words.length; i++) {
  for(var j = 0; j < ends.length; j++) {
    if(words[i].endsWith(ends[j])) {
      words[i] = words[i].replace(new RegExp(ends[j] + '$'), replaced);
      break;
    }
  }
}

console.log(words);