扁平化一個數組與對象
阿新 • • 發佈:2018-03-20
解構 urn else 中括號 math clas 結構數組 OS 如何
一、扁平化一個數組
前幾天遇到的一個問題了,有一個數組var str=[1,2,1,[4,5,[6,7,[8,9]]]];如何講這個數組扁平化,去掉這些重復的中括號。我I也是想了很久才寫了出來,在這裏分享給大家。
1 var str=[1,2,1,[4,5,[6,7,[8,9]]]]; 2 function arr(str,depth){ //depth代表扁平化的次數 3 var newArr=[]; //創建一個新數組,用來添加原數組元素和結構後的數組 4 str.forEach(item=>{ 5 if(Array.isArray(item) && depth>0){ //Array.isArray();判斷一個元素是不是數組,返回值為true或者false 6 newArr.push(...(arr(item,--depth))) //這裏利用了es6的結構數組和遞歸 7 }else{ 8 newArr.push(item); 9 } 10 }) 11 return newArr;12 } 13 console.log(arr(str,8))
擴展:...數組的用法
1 var arr=[1,5,4,2,10,8,8,20,15,14,12]; 2 function minarr(arr){ 3 return Math.min(...arr); //將數組解構 4 } 5 console.log(minarr(arr)) //1
二、扁平化一個對象的方法
我遇到這個問題的時候,利用了很多方法,寫了很多的代碼,查過資料發現了一個很簡單的方法。
1 var obj={0:1,1:1,length:2};
2 console.log(Array.prototype.slice.call(obj));
扁平化一個數組與對象