ES6學習之路7 set資料結構

2022-04-29 10:51:11 字數 3791 閱讀 4826

es6提供了資料結構set。類似於陣列,但是沒有重複值

1.set本身是乙個建構函式,用來生成set資料結構

對set資料結構進行操作的方法

add(value):新增某個值,返回set結構本身

delete(value):刪除某個值,返回乙個布林值,表示刪除是否成功。

has(value):返回乙個布林值,表示該值是否為set的成員。

clear():清除所有成員,沒有返回值

let set = new set();

let arr = [1,2,3,4,5,6,5,4,7,3];

//利用add方法將每個值新增到set中

arr.foreach(current => set.add(current));

console.log(set);//

//迴圈set,檢視每個成員

for(let val of

set)//1 2 3 4 5 6 7

//利用delete刪除5,再檢視set

console.log(set.delete(5));//true

console.log(set);//

//刪除8,由於不存在,所以刪除不成功,返回false

console.log(set.delete(8));//false

利用has判斷成員是否存在

console.log(set.has(4));//true

console.log(set.has(9));//false

利用clear清除所有成員

set.clear();

console.log(set);//set(0) {}

對set資料結構進行操作的屬性size
set資料結構能夠用size屬性訪問資料結構的成員總數,而且set資料結構可以接受乙個陣列(或者類陣列物件)作為引數,用來初始化。

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

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

實際應用:利用set資料結構的沒有重複值性質,對陣列去重。

//陣列去重:

let arr = [1,1,1,2,2,3,4,5,6,5,6];

console.log([...new

set(arr)]);//[1, 2, 3, 4, 5, 6]

console.log(array.from(new

set(arr)));//[1, 2, 3, 4, 5, 6]

//使用 set 實現並集(union)、交集(intersect)和差集(difference)

let a = new

set([1, 2, 3, 4]);

let b = new

set([5, 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 difference = new

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

console.log(difference);// set

將set資料結構轉化為陣列的方法:

利用擴充套件運算子(…)———–[…new set(arr)];

利用array.from()方法——–array.from(new set(arr));

利用for…of…迴圈push。

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

let set = new set();

set.add(5);

set.add("5");

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

set.add(nan);

set.add(nan);

console.log(set);//set(3)

set.add({});

set.add({});

console.log(set);//set(5) , }

對set資料結構進行遍歷的方法

keys():返回鍵名的遍歷器

values():返回鍵值的遍歷器

entries():返回鍵值對的遍歷器

foreach():使用**函式遍歷每個成員

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

//keys()

for(let key of set0.keys())//1 2 3 4 5 6 7

//values()

for(let key of set0.values())//1 2 3 4 5 6 7

//entries()

for(let key of set0.entries())//[1,1] [2,2] [3,3] [4,4] [5,5] [6,6] [7,7]

//foreach()

set0.foreach(val => console.log(val));//1 2 3 4 5 6 7

總結:

set資料結構配合擴充套件運算子或者array.from()方法能夠去重;

set資料結構例項化方法和屬性:(add有返回值、delete有返回值、has有返回值、clear沒有返回值)對其進行操作,size獲取資料結構的成員總量;

set資料結構的遍歷方法keysvaluesentriesforeachmapfilterfor…of…

向set資料結構新增值時,採用的演算法是「same-value equality」,類似於精確相等運算子,注意「類似於」,區別就在於nan物件在「same-value equality」演算法是相等的(nan===nan//false)。

新增5和「5」或者{}和{}「same-value equality」演算法不相等。

「same-value equality」演算法除了nan,其他都遵循精確相等運算子(===)。

我的部落格,歡迎交流!

我的csdn部落格,歡迎交流!

前端筆記專欄

前端筆記列表

遊戲列表

ES6 資料結構 Set

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

ES6學習之 set 資料結構

es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set 結構的例項有以下屬性。set 例項的方法分為兩大類 操作方法 用於運算元據 和遍歷方法 用於遍歷成員 下面先介紹四個操作方法。利用沒有重複值這一特性,可以做到陣列去重的效果。例如 let array1 1...

ES6學習之 資料結構Set

es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set本身是乙個建構函式,用來生成 set 資料結構。set函式可以接受乙個陣列 或者具有 iterable 介面的其他資料結構 作為引數,用來初始化。例一 const set new set 1,2,3,4,4...