es6的學習(set結構陣列去重)
阿新 • • 發佈:2019-02-08
現在es6逐漸成為了進入了前端開發的視野裡,各大瀏覽器和流行的框架對es6的支援也非常好,之前看過幾次阮一峰老師寫的es6入門這本書,感覺非常不錯,所以是時候再深入地去學習總結一下了。那麼就先從set結構陣列去重開始吧。
以前陣列去重非常麻煩,我之前也總結過。那麼就來總結一下陣列去重有哪些方法吧。
1.使用set資料結構去重。(es6新方法)
先看一下set的定義:
***ES6 提供了新的資料結構 Set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。
Set 本身是一個建構函式,用來生成 Set 資料結構。
const s = new Set();
[2, 3, 5, 4 , 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
console.log(i);
}
// 2 3 5 4
封裝一個數組去重函式(Array.from()轉化陣列的新方法)
function dedupe(array){
return Array.from(new Set(array));
}
dedupe([1,1,2,3]) //[1,2,3]
擴充套件運算子(…)內部使用for…of迴圈
let arr = [1,2,3,3];
let resultarr = [...new Set(arr)];
console.log(resultarr); //[1,2,3]
2.利用indexOf以及forEach(利用下標去重法)
let arrResult = [];
arr.forEach(function(v,i,arr){
let bool = arr.indexOf(v,i+1);
// 也可以這樣寫,es6新出了一種校驗陣列是否包含一個成員的方法includes
// 該方法的第二個引數表示搜尋的起始位置,預設為0。如果第二個引數為負數,則表示倒 數的位置,如果這時它大於陣列長度(比如第二個引數為-4,但陣列長度為3),則會重置為從0開始。
// let bool = arr.includes(v,i+1); i+1表示開始搜尋的位置
// if(bool){
// arrResult.push(v);
//}
// es6的includes這個方法很不錯,在大部分時候可以替代indexOf();
if(bool==-1){
arrResult.push(v);
}
});
console.log(arrResult);
還有好多種方法,以後會逐一新增…