1. 程式人生 > >es6的學習(set結構陣列去重)

es6的學習(set結構陣列去重)

現在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);

還有好多種方法,以後會逐一新增…