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”才能使其在上述代码中起作用。
我不知道为什么还有其他地方。
你能帮我吗?
答案 0 :(得分:0)
好吧,如果没有else
,您将总是附加原始元素到结果列表,甚至以前是“ steamrolled”子列表。 使用 else
,如果原始元素本身不是列表本身,则仅将其添加到结果列表中。
我没有测试它,但是我认为如果没有else
,结果将类似于[1, 2, [2], 3, 4, [4], [[4]], [3, [[4]]]]