Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用JavaScript中的.concat或.reduce的嵌套数组递归方法_Javascript_Recursion - Fatal编程技术网

不使用JavaScript中的.concat或.reduce的嵌套数组递归方法

不使用JavaScript中的.concat或.reduce的嵌套数组递归方法,javascript,recursion,Javascript,Recursion,我正在研究一种简单的递归方法来展平数组,但我不知道哪里出了问题。我在这个()上看到过其他线程,但我尝试在不使用.concat或.reduce的情况下执行它 这一个一直循环,但我不知道为什么-看起来它应该命中嵌套最多的数组并返回其中的任何字符 谢谢 var ret= []; var nested = [['a','b'],[],'c',['d','e']]; function flatten(arr) { for (i = 0; i < arr.length; i++) { if

我正在研究一种简单的递归方法来展平数组,但我不知道哪里出了问题。我在这个()上看到过其他线程,但我尝试在不使用.concat或.reduce的情况下执行它

这一个一直循环,但我不知道为什么-看起来它应该命中嵌套最多的数组并返回其中的任何字符

谢谢

var ret= [];
var nested = [['a','b'],[],'c',['d','e']];
function flatten(arr) {
  for (i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      flatten(arr[i]);
    } else {
        ret.push(arr[i]);
    }
  }
}
flatten(nested);
var ret=[];
嵌套变量=['a','b'],[],'c',['d','e'];
函数展平(arr){
对于(i=0;i
您忘记将
i
声明为变量。它被视为一个全局变量

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

这只是部分问题的原因。递归导致后来的调用<代码>扁平化重用相同的全局变量并在其中写入值,而外部调用中的循环仍然处于迭代的中间。安得烈完成了!我不认为RJM的评论是正确的,因为它在for循环中添加了“var”。谢谢大家!欣赏help@skdfsdfa,RJM对该问题的解释是正确的。他们试图添加更多的上下文来解释代码导致无限循环的原因。我明白了,我认为他们是在指定一个单独的问题,而不是添加更多的上下文。再次感谢你,现在这更有意义了
0, 1, 3, 0, 1, 3, 0, 1, ...