如何在javascript中使用递归来展平嵌套数组

时间:2018-06-04 10:46:49

标签: javascript arrays recursion nested flatten

我试图压扁包含在数组变量中的嵌套数组。代码中的一切看起来都很好,但仍然无效。请帮我解决我的代码有什么问题。根据我的说法,这段代码应该返回像[1,2,3,4]这样的扁平数组。

var array = [1,[2],[3,[[4]]]];

function flatten(array){

        return array.map(function(currentElement){

            if(Array.isArray(currentElement)){
                return flatten(currentElement);
            }else{
                return currentElement;
            }
        });
}

console.log(flatten(array)); // [1,[2],[3,[[4]]]]

// expected result => [1,2,3,4]

2 个答案:

答案 0 :(得分:1)

只需使用toString()

即可



var array = [1,[2],[3,[[4]]]];
array = array.toString();
array = array.split(',');
console.log(array);




答案 1 :(得分:1)

您可以使用reduceconcat的组合来实现此目的,因为在大多数浏览器中尚未实现flat

const flatten = array => 
  array.reduce((r, v) => r.concat(Array.isArray(v) ? flatten(v) : v), []);


console.log(flatten([1,[2],[3,[[4]]]])) // [1, 2, 3, 4]