相关疑难解决方法(0)

Javascript递归数组展平

我正在练习并尝试编写一个递归数组展平函数.代码在这里:

function flatten() {
    var flat = [];
    for (var i = 0; i < arguments.length; i++) {
        if (arguments[i] instanceof Array) {
            flat.push(flatten(arguments[i]));
        }
        flat.push(arguments[i]);
    }
    return flat;
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我传递一个数组或嵌套数组,我得到"超出最大调用堆栈大小"错误.我究竟做错了什么?

javascript arrays recursion

13
推荐指数
6
解决办法
2万
查看次数

JS数组串联递归展平的结果

美好的一天!

任务是获得一个数组的平面版本,可能包括一些嵌套数组以及其他元素.用于预期的输入[1, [2], [3, [[4]]]]输出[1, 2, 3, 4]. FreeCodeCamp扰流警报. 当然,会想到递归解决方案,例如:

function steamrollArray(arr) {
  var result = [];
  for(var i = 0; i < arr.length; i++){
      //part of interest
      if (Array.isArray(arr[i])){
        var nestedElements = steamrollArray(arr[i]);
        for(var j = 0; j < nestedElements.length; j ++){
          result.push(nestedElements[j]);
        }
      //</part of interest>.
      } else {
        console.log("pushing: " + arr[i]);
        result.push(arr[i]);
      }
  }
  return result;
}
Run Code Online (Sandbox Code Playgroud)

它确实是这样的.样本运行的结果将是:

pushing: 1
pushing: 2
pushing: 3
pushing: 4
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

问题是:当我们使用concat添加nestedElements …

javascript arrays recursion concat flatten

5
推荐指数
1
解决办法
1672
查看次数

标签 统计

arrays ×2

javascript ×2

recursion ×2

concat ×1

flatten ×1