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