js數組扁平化

數組扁平化處理:實現一個flatten方法,使得輸入一個數組,該數組裏面的元素也能夠是數組,該方法會輸出一個扁平化的數組。javascript

舉個栗子
let givenArr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]; let outputArr = [1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10]java

遞歸

  • 聲明一個res空數組進行存儲,並做爲結果返回
  • 若是元素是數值類型,則直接push到空數組res
  • 若是元素是Array類型,咱們使用concat將其與res拼接起來。可是要注意,該元素的元素可能仍是Array類型,好比對於元素[11, 12, [12, 13, [14]]]]來講,它的元素還包括Array對象,所以,咱們在這裏,須要進行遞歸調用
  • 判斷是不是數組類型,能夠用item instanceof Array,但咱們能夠用ES6Array.isArray(item)
function flatten(arr){
    let res = []
    arr.forEach((item)=>{
        Array.isArray(item)?res = res.concat(flatten(item)):res.push(item)
    })
    return res
}
複製代碼

基於上面的思路,也能夠改寫成下面這種形式:數組

function flatten(arr){
    arr.reduce((prev,current)=>{
      return prev.concat(Array.isArray(item)?flatten(item):item);
    },[])
}
複製代碼
相關文章
相關標籤/搜索