我正在尝试一种简单的递归方法来展平数组,我无法弄清楚我哪里出错了。我已经看到了其他线程(How to flatten nested array in javascript?),但我尝试不使用.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);
答案 0 :(得分:3)
您忘记将i
声明为变量。它被视为一个全局变量。
for (var i = 0; i < arr.length; i++) {
如果在每次迭代中输出i
的值,您将看到无限循环问题,
0, 1, 3, 0, 1, 3, 0, 1, ...