1. 程式人生 > >扁平化一個數組與對象

扁平化一個數組與對象

解構 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));

扁平化一個數組與對象