Javascript 不删除某些字符

Javascript 不删除某些字符,javascript,Javascript,我正在研究一些codewars问题,我想到了这个“消除噪音”的方法,我想关键是避开反斜杠\并使用替换方法,这很简单。但我不想使用替换,相反,我发现自己在尝试使用拼接方法删除项目时遇到了麻烦 有趣的是,当我在Chrome开发工具中调试时,我一步一步地看到项目被删除,但是控制台.log会吐出一些有问题的字符($/·|ªl)来删除,最后返回并与这些字符连接。为什么呢 功能删除(str){ var base=“%$&/#·@|º\ª”; var arr=str.split(“”); 对于(变量i=0;

我正在研究一些codewars问题,我想到了这个“消除噪音”的方法,我想关键是避开反斜杠\并使用替换方法,这很简单。但我不想使用替换,相反,我发现自己在尝试使用拼接方法删除项目时遇到了麻烦

有趣的是,当我在Chrome开发工具中调试时,我一步一步地看到项目被删除,但是控制台.log
会吐出一些有问题的字符($/·|ªl)来删除,最后返回并与这些字符连接。为什么呢

功能删除(str){
var base=“%$&/#·@|º\ª”;
var arr=str.split(“”);
对于(变量i=0;iremoveNoise('he%$&/#·@º\ª\llo');/=>$/|ªllo
您正在使用
splice
从数组中删除条目,但随后您将为下一个循环递增
i
。如果从10个条目的数组中删除索引5处的条目,那么索引6处的条目现在在索引5处(现在是9个条目的数组),因此不希望增加索引

解决方案是使用
while
循环,并且仅在不
拼接的情况下更新
i

功能删除(str){
var base=“%$&/#·@|º\ª”;
var arr=str.split(“”);
var i=0;
而(i文件.正文.附件(pre)您正在从数组中删除字符。这将使索引器变量
i
与要测试的字符不同步。简单的修复方法是从数组的末尾开始,一直到数组的开头

将for循环更改为此

for(var i = arr.length -; i <= 0; i--) {

for(var i=arr.length-;i$/·|ªllo
请注意:如果您想消除噪音,请记住,在99/100的情况下,定义您想要在字符串中删除的内容更容易、更可靠,而不是您想要从字符串中删除的内容。如果下面的答案回答了您的问题,按照这种方式,您会“接受”通过点击旁边的复选标记来获得答案。非常感谢。关于阅读书籍的内容太多了,而不是申请。我记得当我读N.Zakas的书时,读到这是一个常见的问题,我直接掉进了陷阱。再次感谢你。