展平嵌套数组

时间:2019-11-24 16:24:07

标签: if-statement

function steamrollArray(arr) {
    let newArr = [];

    arr.forEach(el => {
      if(Array.isArray(el)) {
        newArr.push(...steamrollArray(el));
      }
        newArr.push(el);  
    })
    return newArr; 
}

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

应该记录输出[1, 2, 3, 4]。 我的问题是为什么我必须在if语句后加上“ else”才能使其在上述代码中起作用。 我不知道为什么还有其他地方。 你能帮我吗?

1 个答案:

答案 0 :(得分:0)

好吧,如果没有else,您将总是附加原始元素到结果列表,甚至以前是“ steamrolled”子列表。 使用 else,如果原始元素本身不是列表本身,则仅将其添加到结果列表中。

我没有测试它,但是我认为如果没有else,结果将类似于[1, 2, [2], 3, 4, [4], [[4]], [3, [[4]]]]