我创建了以下函数来展平嵌套数组:
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]]]]);
代码会将一个很好地扁平化的数组记录到控制台,但该函数返回“未定义”。
我很困惑 - 这是为什么?!
最佳答案
递归调用 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]]]]);
关于javascript - 我的函数会将一个值记录到控制台,但它不会返回相同的值 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874262/