陣列扁平化是指將乙個多重巢狀的陣列變為一維陣列:
let arr = [1,[[2,2],1],3,[4,5,[6,7]]]; // =>[ 1, 2, 2, 1, 3, 4, 5, 6, 7 ]
如何實現呢?這裡有三個思路:
1. 利用reduce函式:
return this.reduce((total, val) =>
array.isarray(val) ?
// 如果是陣列,遞迴,然後再concat
total.concat(val.flatten()) :
// 不是陣列,直接concat
// 此處需要給reduce函式傳個初始的陣列
total.concat(val),)
2. string.prototype.replace+json.parse +json.stringfy
return json.parse(`[$]`)
過濾掉陣列的全部方框,然後再外面加上一層,最後轉為陣列
3.array.prototype.tostring+split+map
return this.tostring().split(",").map((v)=>+v)
tostring會呼叫陣列自身的tostring方法.預設過濾掉所有的方框,最後連線起來轉為數字就可以了 陣列扁平化
原陣列 const arr 1,2,3,4 5,6,7,8 9 希望輸出 1,2,3,4,5,6,7,8,9 方法一 遞迴 function arrdelayering arr else return newarr let newarr arrdelayering arr 1,2,3,4,5,6,7...
陣列扁平化
今天看到了陣列扁平化處理,猶記得之前面試被問到過,下面介紹一下陣列扁平化處理的幾種形式 題目要求 將陣列 arr 1,2,3,4,5,6,7,8,9 轉化為 1,2,3,4,5,6,7,8,9 1 遞迴 var arr 1,2,3,4,5,6,7,8,9 方法一 遞迴 function flatfu...
扁平化陣列
第一次遇到陣列扁平化已經是在3k遊戲的筆試題裡,當時是用了遞迴的方法。因為對一些陣列方法,字串方法十分的不熟練 扁平化陣列的核心都是,遍歷陣列元素,遇到陣列就拆,不是陣列就加進去。var arr 1,2,3,4,5 console.log bianpinghua arr tostring split...