javascript - 在此代码中使用全局变量的最佳替代方法

标签 javascript function recursion

自从我开始编程以来,我似乎以全局变量为目标,并且发现没有它们很难工作,并且发现这里使用递归函数尤其困难。有人可以帮助我使用这段代码使其成为全局变量吗?另外,是否有引用资料可以帮助改变思维方式,所以我最终不会觉得需要它们?我觉得我对代码的看法需要改变,但我不知道是什么。

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/

相关文章:

javascript - 使用 JavaScript 移动 html td 元素

javascript - 将 blob 写入文本文件?

javascript - 如何制作一个可重用的函数,以便我保持 DRY 的良好实践?

r - 使用 ggplot2 和 dplyr 编程

JavaScript,只能使用下划线 _ 访问属性

javascript - 如果我不知道类别数组的深度,打印此内容的递归方法是什么

javascript - jQuery 通过 XPath 选择元素

javascript - Fancybox 无法在 IE 中工作 : object doesn't support this method

function - Clojure 中的嵌套匿名函数

javascript - 递归检查树上的条件并在找到时停止