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...