巢狀陣列扁平化和陣列去重

2021-08-09 16:17:48 字數 1474 閱讀 3582

1. 利用 array.prototype.flat

function flattendeep(arr)
2. 利用 reduce 和 concat

function flattendeep(arr)
1. 利用 es6 新資料型別 set

set類似於陣列,但是成員的值都是唯一的,沒有重複的值。

function unique (arr) 

var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, nan, nan,'nan', 0, 0, 'a', 'a',{},{}];

console.log(unique(arr))

//[1, "true", true, 15, false, undefined, null, nan, "nan", 0, "a", {}, {}]

不考慮相容性,這種去重的方法**最少。這種方法還無法去掉「{}」空物件,後面的高階方法會新增去掉重複「{}」的方法。
2. 利用 indexof

原理:建立新陣列,遍歷陣列中的每個元素,如果用 indexof 在新陣列中找不到就追加到新陣列

優點:最簡單(可以去重數字和字串混合的陣列)

缺點:不能排序

function clear1(arr) 

}return result;

}

4. 利用reduce

function uniq(arry)
5. 雙重 for 迴圈,然後 splice 去重

function unique(arr)

}newarrr.push(arr[i]);

} return newarrr;

}

6. 利用 filter 去重

function unique(arr) );

}   var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, nan, nan,'nan', 0, 0, 'a', 'a',{},{}];

console.log(unique(arr))

//[1, "true", true, 15, false, undefined, null, "nan", 0, "a", , ]

巢狀陣列拍平(陣列扁平化)

var arr 1,2,3 4,5,6 var arr flat arr.flat infinity flat 預設只會 拉平 一層,如果想要 拉平 多層的巢狀陣列,可以將flat 方法的引數寫成乙個整數,表示想要拉平的層數,預設為1。如果不管有多少層巢狀,都要轉成一維陣列,可以用infinity關...

陣列去重 扁平化

arr.flat 可以在flat新增可選值infinity arr.tostring.split array.from new set arr new set arr 先扁平化在來去重arr.map number 任何定義了遍歷器 iterator 介面的物件,都可以用擴充套件運算子轉為真正的陣列。...

陣列去重與陣列扁平化

一 陣列去重 1 indexof function only arr return res 2 set結構 var set new set arr array.from set 3 filter過濾 function only arr return res 4 reduce function onl...