我正在研究一种简单的递归方法来展平数组,但我不知道哪里出错了。我已经看到关于此的其他线程 ( 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);
最佳答案
您忘记将 i
声明为变量。它被视为全局变量。
for (var i = 0; i < arr.length; i++) {
如果您在每次迭代中输出 i
的值,您将看到无限循环问题,
0, 1, 3, 0, 1, 3, 0, 1, ...
关于javascript - 在 JavaScript 中不使用 .concat 或 .reduce 的嵌套数组的递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44188530/