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

Javascript 检查字符串是否包含数组中的一个字符串,javascript,arrays,Javascript,Arrays,我试图检查团队是否在数组中包含以下字符串之一。如果是,则将其移除。为什么它不这样做 function changeName(name) { var team = name; var removearray = ['.CS', ' Dota2', '-Dota2', ' Esports', 'eSports', ' Tactics', 'DotCom', ' DotA2', ' - LoL', '-LoL', ' Carry', 'Â', ' LoL']; removearray.fo

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

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;
}

请注意,某些浏览器(如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方法是执行此类任务的一种非常好的方法。

首先检查控制台中的错误。字符串未定义,应该是team而不是Steadwell,changename确实未定义。@PeterPik,根据控制台中的错误,您正在调用changename。但是这个函数是带有大写字母N的changeName。正则表达式不是用于此的合适工具。例如,您的团队名称.CS将同时匹配.CS、ACS和其他名称。想象一下,如果一个团队的名称中包含。*。如果要匹配一个精确的字符串,为什么要使用正则表达式?
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);
}