題目
對嵌套的數(shù)組進(jìn)行扁平化處理。你必須考慮到不同層級的嵌套酪碘。
如果你被卡住了炕矮,記得開大招 Read-Search-Ask么夫。嘗試與他人結(jié)伴編程、編寫你自己的代碼肤视。
這是一些對你有幫助的資源:
Array.isArray()
steamroller([[["a"]], [["b"]]]) 應(yīng)該返回 ["a", "b"]档痪。
steamroller([1, [2], [3, [[4]]]]) 應(yīng)該返回 [1, 2, 3, 4]。
steamroller([1, [], [3, [[4]]]]) 應(yīng)該返回 [1, 3, 4]邢滑。
steamroller([1, {}, [3, [[4]]]]) 應(yīng)該返回 [1, {}, 3, 4]腐螟。
思路
- 看到題目提示,其實應(yīng)該就是將嵌套的數(shù)組提到第一層困后;
- 需要用到 Array.isArray()來判斷arr的某一個元素是否是數(shù)組乐纸;
- 如果是數(shù)組,則需要用到 concat 合并到新的數(shù)組摇予;如果不是數(shù)組汽绢,則直接 push 到新的數(shù)組中;
解答
function steamroller(arr) {
// I'm a steamroller, baby
var len = arr.length;
var temp =[];
for(var i =0;i<len;i++){
if(Array.isArray(arr[i])){
temp=temp.concat(steamroller(arr[i]));
} else{
temp.push(arr[i]);
}
}
return temp;
}
steamroller([1, [2], [3, [[4]]]]);
- 用到的2個函數(shù) concat 是針對數(shù)組進(jìn)行合并侧戴;push則是給數(shù)組添加新的元素宁昭;