gpt4 book ai didi

javascript - 使用 Javascript 的递归问题

转载 作者:行者123 更新时间:2023-11-28 12:24:15 25 4
gpt4 key购买 nike

我正在应对 FreeCodeCamp 的这项挑战

Flatten a nested array. You must account for varying levels of nesting.

我正在尝试使用递归来解决它。

这是我的代码:

function steamroller(arr) {
var flatArray = [];

function flatten(obj) {
if (!Array.isArray(obj)) {
return(obj);
}
for (var i in obj) {
return flatten(obj[i]);
}
}

flatArray.push(flatten(arr));

console.log(flatArray);
}

steamroller([1, [2], [3, [[4]]]]);

此日志:

Array [ 1 ]

我可以看到问题所在,return 语句破坏了 for 循环,因此仅返回第一个值。

但是,如果我省略返回并仅使用:

flatten(obj[i]);

我回来了:

Array [ undefined ]

我应该怎么做才能解决这个问题?

最佳答案

您需要将项目添加到结果数组中。

function flatten(arr){
var flat = [];

arr.forEach(function(item){
flat.push.apply(flat, Array.isArray(item) ? flatten(item) : [item]);
});

return flat;
}

关于javascript - 使用 Javascript 的递归问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31578014/

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