![[Intermediate Algorithm] - Steamroller [Intermediate Algorithm] - Steamroller](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
题目
对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。
提示
测试用例
-
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]。
分析思路
分析数组元素要一层层剥离,就是一个递归的思想。
代码
function steamroller(arr) {
// I'm a steamroller, baby
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i]))
//steamroller(arr[i]);
newArr = newArr.concat(steamroller(arr[i]));
else
newArr.push(arr[i]);
}
return newArr;
}
steamroller([1, [2], [3, [[4]]]]);