我的函数会将一个值记录到控制台,但它不会返回相同的值 - 为什么?

时间:2015-06-16 17:27:39

标签: javascript arrays function recursion

我创建了以下函数来展平嵌套数组:

function steamroller(arr) {

  arr = arr.reduce(function(a, b, i){
    return a.concat(b); 
    },[]);

  if (!Array.isArray(arr[arr.length-1])) {console.log(arr); return arr;}

  steamroller(arr); 
}

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

代码会将一个很好的扁平数组记录到控制台,但该函数返回' undefined'。

我很难过 - 这是为什么?!

2 个答案:

答案 0 :(得分:3)

在递归调用steamroller时,你错过了一个回复。固定代码:

function steamroller(arr) {

  arr = arr.reduce(function(a, b, i){
    return a.concat(b); 
    },[]);

  if (!Array.isArray(arr[arr.length-1])) {console.log(arr); return arr;}

  return steamroller(arr); 
}

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

答案 1 :(得分:0)

即使没有回复也能为我工作(Firefox)

enter image description here