检查字符串是否包含数组中的一个字符串

时间:2015-02-28 16:46:53

标签: javascript arrays

我试图检查团队是否包含数组中的以下字符串之一。如果是,则删除它。为什么不这样做?

function changeName(name) {
  var team = name;
  var removearray = ['.CS', ' Dota2', '-Dota2', ' Esports', 'eSports', ' Tactics', 'DotCom', ' DotA2', ' - LoL', '-LoL', ' Carry', 'Â', ' LoL'];
  removearray.forEach(function( word ) {
      team = team.replace( new RegExp( word, 'g' ), '' );
  });
  return team;
}

2 个答案:

答案 0 :(得分:1)

请注意,某些浏览器(如IE8)不支持“forEach”。

另外,请考虑以下实施:

function changeName(name) {
  var removearray = ['.CS', ' Dota2', '-Dota2', ' Esports', 'eSports', ' Tactics', 'DotCom', ' DotA2', ' - LoL', '-LoL', ' Carry', 'Â', ' LoL'];
  return team = removearray.reduce(function(previous, current) {
    return previous.replace( new RegExp( current, 'g' ), '' );
  }, name);
}

Javascript中的Array Prototype中提供的“reduce”方法是执行此类任务的一种非常好的方法。

答案 1 :(得分:0)

function changeName(name) {
  var team = name;
  var removearray = ['.CS', ' Dota2', '-Dota2',
    ' Esports', 'eSports', ' Tactics', 'DotCom',
    ' DotA2', ' - LoL', '-LoL', ' Carry', 'Â', ' LoL'];
  for(var i = 0; i < removearray.length; i++){
      while(team.indexOf(removearray[i]) > -1) {
          var index = team.indexOf(removearray[i]);
          if (index > -1) {
              team = team.substr(0, index) +
                  team.substr(index + removearray[i].length);
          }
      }
  }
  return team;
}

var one = changeName('John'); // returns 'John'
var two = changeName('John Dota2 Doe'); // returns 'John Doe'
var three = changeName('John Dota2 Doe Dota2.CS') // returns 'John Doe'