gpt4 book ai didi

Javascript 递归错误

转载 作者:行者123 更新时间:2023-11-30 07:55:21 25 4
gpt4 key购买 nike

我的目标是编写一个可以展平数组的函数。所以例如 [1,[2,3]] 应该变成 [1,2,3]。我尝试使用如下所示的递归方法,但它会产生无限循环。

function steamrollArray(arr) {

var resultArray = [];

function flatArray(array) {
for (i = 0; i < array.length; i++){
if (Array.isArray(array[i])) {
flatArray(array[i]);
} else resultArray.push(array[i]);
}
}

flatArray(arr);
return resultArray;
}

steamrollArray([1, [2,3]]);

我的错误是什么?

提前致谢

最佳答案

您需要将 resultArray 移动到 flatArray 中,并将 flatArray 的递归调用也连接到结果。

从末尾看递归是一个很好的方法,这意味着,您需要一个数组作为结果,然后您需要在开始时声明一个数组并在最后返回该数组,或者在函数之间。

在处理数据时,您需要为数组追加单个项目或作为子数组递归调用结果的数组。两部分都在 if 子句中。

function steamrollArray(arr) {
function flatArray(array) {
var resultArray = [], // move inside
i; // declare as well
for (i = 0; i < array.length; i++) {
if (Array.isArray(array[i])) {
resultArray = resultArray.concat(flatArray(array[i]));
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
} else {
resultArray.push(array[i]);
}
}
return resultArray; // return result here
}

return flatArray(arr); // return the result of the call
}

console.log(steamrollArray([1, [2, 3]]));
console.log(steamrollArray([[1, 9, [7, 8]], [2,3]]));

关于Javascript 递归错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41468564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com