ES6 9) 資料結構Set

2021-08-21 20:21:03 字數 3639 閱讀 5923

es6提供了心得資料結構——set。它類似於陣列,但是成員的值都是唯一的,沒有重複。set本身是一種建構函式,用來生成set資料結構。

一、set的基本用法。.

1、通過add向set結構新增資料成員,set不會新增重複的值。可以用來去除陣列的重複元素,例如:new set([1,2,3,3,3])。

const s = new set();

[1,2,3,4,5,6,6].foreach(x => s.add(x));

for(let i of s)

2、set函式接受乙個陣列(或其他具有iterable介面的其他資料結構)作為引數,用來初始化。

//用陣列作為引數

const set = new set([1,2,3,4,4]);

console.log([...set]); //[1,2,3,4]

//用類似於陣列的物件作為引數

function divs()

const set = new set(div());

console.log(set.size); //56

3、向set加入值時不會發生型別轉換,所以5和"5"是兩種不同的值。set內部判斷兩個值是否相同時,使用的演算法是「same-value equality",它類似於(===)。主要區別是nan等於自身,而(===)認為nan不等於自身。

let set = new set();

let a = nan;

let b = nan;

set.add(a);

set.add(b);

console.log(set); //set

向set中新增了兩個nan,但是只輸出了乙個nan,說明在set內部,兩個nan是相等的。

4、兩個物件總是不相等。

let set = new set();

set.add({});

console.log(set.size); //1

set.add({});

console.log(set.size); //2

//由於兩個空物件不是精確值,所以它們被視為兩個值

二、set例項的屬性和方法。

1、set結構的例項有以下屬性。

2、set例項的操作方法(用來運算元據的)。

3、array.from方法可以將set結構轉換為陣列。這就提供了一種去除陣列重複元素的方法。

const items = new set([1,2,3,4,5]);

const array = array.from(items);

三、遍歷操作。

1、set結構的例項的四種遍歷方法。

注意:set的遍歷順序就是插入的順序。

2、keys()、values()、entries()方法返回的都是遍歷器物件,由於set結構沒有鍵名,只有鍵值,所以keys和values方法的行為完全一致。

let set = new set(["red","yellow","green"]);

for(let item of set)

for(let item of set.keys())

for(let item of set.values())

for(let item of set.entries())

3、可以省略values方法,直接使用for....of迴圈遍歷set。

let set = new set(["red",'green','blue']);

for(let x of set)

4、foreach()用於對每個成員執行某種操作,沒有返回值。它有乙個引數,就是乙個處理函式,該處理函式有三個引數,依次是鍵值、鍵名、集合本身。

let set = new set([1,2,3]);

set.foreach((value,key) => console.log(value*2)); //2 4 6

5、遍歷的應用。

(1)擴充套件運算子(...)內部使用for...of迴圈,所以也可以用於set結構。

let set = new set(['red','green','blue']);

let arr = [...set];

console.log(arr); //[ 'red', 'green', 'blue' ]

(2)擴充套件運算子和set結構相結合就可以去除陣列的重複成員。

let arr = [3,5,2,2,5,5];

let unique = [...new set(arr)];

console.log(unique); //[3,5,2]

(3)而且,陣列的map和filter方法也可以用於set。

let set = new set([1,2,3]);

set = new set([...set].map(x => x*2));

console.log(set); //set

let set = new set([1,2,3,4,5]);

set = new set([...set].filter(x => (x%2) == 0));

console.log(set); //set

(4)使用set可以很容易的實現並集(union)、交集(intersect)、差集(different)。

let a = new set([1,2,3]);

let b = new set([4,3,2]);

//並集

let union = new set([...a,...b]);

console.log(union); //set

//交集

let intersect = new set([...a].filter(x => b.has(x)));

console.log(intersect); //set

//差集

let different = new set([...a].filter(x => !b.has(x)));

console.log(different); //set

(5)如果想在遍歷操作中同步改變原來的set結構,目前沒有直接的方法,但有兩種 變通的方法,一種是利用原來的set結構對映出來乙個新的結構,然後賦值給原來的set結構;另一種是利用array.from方法。

let set = new set([1,2,3]);

set = new set([...set].map(val => val * 2));

console.log(set); //set

let set = new set([1,2,3]);

set = new set([array.from(set,val => val * 2)]);

console.log(set); //set

ES6 set資料結構

set 本身是乙個建構函式,用來生成 set 資料結構。let set new set set 函式可以接受乙個陣列作為引數,用來初始化。但是成員中的值都是唯一的。沒有重複的值 let se new set let arr 2,3,4,5,6,2,3,4,5,6 arr.foreach item s...

ES6 Set資料結構

三 增刪改查 es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯的,沒有重複的值 set本身是乙個建構函式,用來生成set資料結構。set.prototype.size返回 set 物件中的值的個數 const s newset set函式可以接受乙個陣列作為引數,用來初始化 cons...

ES6 資料結構 Set

資料結構 set 集合的基本概念 集合是由一組無序且唯一 即不能重複 的項組成的。這個資料結構使用了與有限集合相同的數學概念,應用在計算機的資料結構中。特點 key 和 value 相同,沒有重複的value es6提供了資料結構set.它類似於陣列,但是成員的值都是唯一的,沒有重複的值。1 如何建...