js中ES6的Set的基本用法

2021-09-11 21:23:06 字數 4085 閱讀 2597

參考:阮一峰 es6入門之set

es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。

const s =

newset()

;[2,

3,5,

4,5,

2,2]

.foreach

(x => s.

add(x));

// set結構不會新增重複的值

for(

let i of s)

// ## 初始化

// 例一 可以接受乙個陣列作為引數

const

set=

newset([

1,2,

3,4,

4,])

;// ...將乙個陣列轉為用逗號分隔的引數序列

console.

log(

[...

set]);

// 例二

const items =

newset([

1,2,

3,4,

5,5,

5,5,

]);console.

log(items.size)

;// 例三 可以接受具有iterable介面的其他資料結構作為引數

const set2 =

newset

(document.

queryselectorall

('div'))

;console.

log(

set.size)

;// 類似於

const set2 =

newset()

;document

.queryselectorall

('div').

foreach

(div =>

set.

add(div));

console.

log(

set.size)

;// set中nan等於自身,其餘比較相當於 ===

let set3 =

newset()

;let a =

nan;

let b =

nan;

set3.

add(a)

;set3.

add(b)

;console.

log(set3)

// 兩個物件總是不相等的

let set4 =

newset()

;set4.

add();

// 1

console.

log(set4.size)

;set4.

add();

// 2

console.

log(set4.size)

;

const s =

newset()

;s.add(1)

.add(2

).add(2)

;console.

log(s.size)

;console.

log(s.

has(1)

);console.

log(s.

has(2)

);console.

log(s.

has(3)

);s.delete(2

);console.

log(s.

has(2)

);// set轉陣列

const items =

newset([

1,2,

3,4,

5]);

const array = array.

from

(items)

;console.

log(array)

;// 去除陣列重複成員

function

dedupe

(array)

dedupe([

1,1,

2,3]

);

let

set=

newset([

'red'

,'green'

,'blue'])

;// 返回鍵名

for(

let item of

set.

keys()

)// 返回鍵值

for(

let item of

set.

values()

)// set 鍵名=鍵值

// 返回鍵值對

for(

let item of

set.

entries()

)// 可以直接用 for of遍歷set

// for in 和 for of的區別是:in 是遍歷物件,of是遍歷值

for(

let x of

set)

// set也有foreach()方法

set.

foreach

((value, key)

=> console.

log(key +

' : '

+ value));

// 此處foreach方法的引數是乙個處理函式。

// 陣列的 map 和 filter 方法也可以間接用於set

let s =

newset([

1,2,

3]);

// map 將原陣列對映成新陣列

s =new

set(

[...s]

.map

(x => x *2)

);console.

log(s)

;// filter返回過濾後的新陣列

s =new

set(

[...s]

.filter

(x =>

(x %3)

==0))

;console.

log(s)

;// 實現並集、交集、差集

let a =

newset([

1,2,

3]);

let b =

newset([

4,3,

2]);

let union =

newset([

...a,

...b]);

console.

log(union)

;let intersect =

newset([

...a]

.filter

(x => b.

has(x)))

;console.

log(intersect)

;let difference =

newset([

...a]

.filter

(x =>

!b.has

(x)));

console.

log(difference)

;// 在遍歷操作中,同步改變原來的set結構的兩種變通方法

// 1.利用原set結構對映出乙個新的結構,然後賦值給原來的set結構

let set1 =

newset([

1,2,

3]);

set1 =

newset([

...set1]

.map

(val => val *2)

);console.

log(set1)

;// 2.利用array.from

let set2 =

newset([

1,2,

3]);

set2 =

newset

(array.

from

(set2, val => val *2)

);console.

log(set2)

;

es6 基本用法

一 let 命令 基本用法 1 塊及作用域 var d 1 if true console.log d 4 d被覆蓋 let c 2 if true console.log c 2上面的 中 分別用 var 和 let 宣告了兩個變數 var 宣告的即使在作用域的也可以覆蓋之前宣告 let 宣告的變...

ES6的Map基本用法

使用方法 var map newmap map的迴圈 arr.foreach key,value console.log map set 是給map集合設定鍵值對元素 引數1 鍵 引數2 值 get 是獲取map集合中指定鍵的值 判斷指定鍵是否存在於map集合中 返回布林型別的值 var map n...

es6中Set陣列去重用法

var arr 1,4,5,1,4,3,1,7 arr1 2,7,9 arr2 8,0 var str abcdefgacd var obj obj1 去重 console.log new set arr 陣列去重簡寫 1,2,3,4,5,7,8,9,0 console.log array.from...