我试图在保留顺序的同时展平嵌套数组,例如[[1, 2], 3, [4, [[5]]]]
应转换为 [1, 2, 3, 4, 5]
。
我正在尝试使用递归来执行此操作,但下面的代码不起作用,我不明白为什么。我知道还有其他方法可以做到这一点,但我想知道这有什么问题。
function flatten (arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flatten(arr);
} else {
newArr.push(arr[i]);
}
}
return newArr;
}
flatten([[1, 2], 3, [4, [[5]]]]);
谢谢
最佳答案
递归调用flatten
时,需要将arr[i]
传给它,然后用newArr拼接结果。所以替换这一行:
flatten(arr);
与:
newArr = newArr.concat(flatten(arr[i]));
关于javascript - 在 JavaScript 中使用递归展平嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30582352/