挑战:
对嵌套的数组进行平铺嵌套数组。你必须考虑到不同层级的嵌套。
例如:
steamroller([[["a"]], [["b"]]]) 应该返回 ["a", "b"]。
steamroller([1, [2], [3, [[4]]]]) 应该返回 [1, 2, 3, 4]。
steamroller([1, [], [3, [[4]]]]) 应该返回 [1, 3, 4]。
steamroller([1, {}, [3, [[4]]]]) 应该返回 [1, {}, 3, 4]。
答案:
方法 | 描述 |
---|---|
reduce() | 将数组元素计算为一个值(从左到右)。 |
concat() | 连接两个或更多的数组,并返回结果。 |
isArray() | 判断对象是否为数组。 |
function steamroller(arr) {
// I'm a steamroller, baby
return arr.reduce(function (acc, val) {
return acc.concat(Array.isArray(val) ? (val.length > 0 ? steamroller(val) : []) : val);
}, []);
}
steamroller([1, [2], [3, [[4]]]]);
运行结果:
[1,2,3,4]
在线测试: