自从我开始编程以来,我似乎以全局变量为目标,并且发现没有它们很难工作,并且发现这里使用递归函数尤其困难。有人可以帮助我使用这段代码使其成为全局变量吗?另外,是否有引用资料可以帮助改变思维方式,所以我最终不会觉得需要它们?我觉得我对代码的看法需要改变,但我不知道是什么。
var res = [];
function steamrollArray(arr) {
// I'm a steamroller, baby
func(arr);
console.log(res);
return res;
}
steamrollArray([1, {}, [3, [[4]]]]);
function func(array){
for (var i=0; i<array.length ; i++){
if (Array.isArray(array[i])){
func(array[i]);
}
else {
res.push(array[i]);
}
}
}
最佳答案
只需在函数内部声明变量,最后返回即可。适本地处理递归调用。
function flatten(array){
var res = [];
for (var item of array) {
if (Array.isArray(item))
res.push(...flatten(item));
else
res.push(item);
}
return res;
}
console.log(flatten([1, {}, [3, [[4]]]]));
这与您的代码的行为并不完全相同,但这是人们可能期望的。
关于javascript - 在此代码中使用全局变量的最佳替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40939958/