我用javascript制作了一个递归函数,从输入的数组中过滤出字符串。为什么它要额外通过for循环3次?

我用javascript制作了一个递归函数,从输入的数组中过滤出字符串。为什么它要额外通过for循环3次?,javascript,arrays,sorting,for-loop,conditional,Javascript,Arrays,Sorting,For Loop,Conditional,函数过滤器列表{ 变量计数=l.长度; 日志“计数为:”,计数; 函数环{ 对于变量i=0;i

函数过滤器列表{ 变量计数=l.长度; 日志“计数为:”,计数; 函数环{ 对于变量i=0;i过滤列表[1,2,a,c,d'] 我知道这不是对您问题的直接回答,但如果您只需要从数组中筛选字符串,则可以更轻松地使用:

或者,如果您希望将其作为独立函数保留:

function filter_list(array) {
  return array.filter(function(i) { return typeof i !== 'string' });
}

使用splice修改数组,但计数保持不变。如果要从数组中拼接元素,最好以相反的方式遍历列表,这样就不会试图访问不存在索引的元素,因为它会运行多次。。当您在if语句中调用filter_listl时,您正在重新启动循环,最好是像上面一样反向遍历,或者在调用filter_listl之后放置一个break语句,这将阻止for循环继续为什么同时使用迭代和递归?做一个或另一个,不要两个都做。@haxxxton啊,我明白了。递归是他解决删除问题的方法,同时他以正向顺序进行遍历。哇,谢谢大家的评论!很有启发性。正如下面所说的,我完全忘记了过滤器是一个东西哈哈哈。尽管如此,我发现认识到为什么会出现像这样的错误同样值得。对于解决最初的问题非常有帮助。非常感谢你!
function filter_list(array) {
  return array.filter(function(i) { return typeof i !== 'string' });
}