在javascript中删除字符串数组中的特殊字符
我想在js中循环一个字符串数组,并通过删除具有特殊字符的元素来改变该元素。我可以使用字符串,但不能使用字符串数组在javascript中删除字符串数组中的特殊字符,javascript,arrays,regex,string,Javascript,Arrays,Regex,String,我想在js中循环一个字符串数组,并通过删除具有特殊字符的元素来改变该元素。我可以使用字符串,但不能使用字符串数组 var name=['created_at','place at','room no'; console.log(名称) name.forEach((元素)=>{ 元素=元素。替换(/[^a-zA-Z]/,“”); }); console.log(名称) //但是,这个正则表达式可以很好地处理独立字符串,如下所示 var name=“在创建时创建” 名称=名称。替换(/[^a-zA
var name=['created_at','place at','room no';
console.log(名称)
name.forEach((元素)=>{
元素=元素。替换(/[^a-zA-Z]/,“”);
});
console.log(名称)
//但是,这个正则表达式可以很好地处理独立字符串,如下所示
var name=“在创建时创建”
名称=名称。替换(/[^a-zA-Z]/,“”);
console.log(name)
数组是引用类型,但数组中的字符串是值类型。由于您正在更新值类型的单个字符串,因此它不会更新原始数组。
您可以使用map
函数返回整个新数组。
或者使用索引foreach来改变当前数组
names.map((element) => element.replace(/[^a-zA-Z ]/, ' '));
或
forEach()方法是为每个元素启动函数的循环。
在您的问题中,您放置了一个箭头函数,但您也可以使用非箭头函数,如下所示:
names.forEach(myReplaceFunction)
根据您的问题,这相当于:
函数myReplaceFunction(元素){
元素=元素。替换(/[^a-zA-Z]/,“”);
}
正如您所看到的,它不能到达初始数组的任何元素(即使使用术语element)
幸运的是,forEach方法发送了3个参数
函数myReplaceFunction(元素、当前索引、原始数组){
originArray[currentIndex]=元素。替换(/[^a-zA-Z]/,“”);
}
这可以简单地归结为
var name=['created_at','pla ced at','room no';
name.forEach((el,i,arr)=>{
arr[i]=标高替换(/[^a-zA-Z]/g');
});
console.log(names)
您可能正在寻找一个map
而不是一个forEach
让我尝试使用map。请注意,您应该捕获mapsure的返回,注意这里可能有names[i]=element.replace(/[^a-zA-Z]/,'')代码>?但是map
是更好的解决方案。“正如您所看到的,它不能到达初始数组的任何元素”-这只适用于基本体,它已经运行了。@Andreas。。。这是真的,我错过了,但因为它需要更长的解释,我放了一个很好的(?)链接…)
names.forEach((element, idx) => {
names[idx] = element.replace(/[^a-zA-Z ]/, ' ');
});