es6的set怎么使用

這篇文章主要講解了“es6的set怎么使用”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“es6的set怎么使用”吧!

公司主營業(yè)務:成都網(wǎng)站設計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出澄海免費做網(wǎng)站回饋大家。

Set是一種用于存儲有序數(shù)據(jù)的數(shù)據(jù)結構,Set中的元素具有唯一性,不允許存儲相同的元素;Set()可以接受一個可迭代對象作為參數(shù),但是會將這個可迭代對象中相同的內(nèi)容去除,因此可用于去除重復元素,預防“Array.from(new Set(arr))”或“[...new Set(arr)]”。

一、基本用法

SetES6 提供的一種新的數(shù)據(jù)結構,它跟數(shù)組一樣用于存儲有序的數(shù)據(jù),但是沒有隨機訪問的能力,也就是說,不能像數(shù)組一樣通過索引來獲取具體的某個元素。除此以外,最重要的是,Set 中的元素具有唯一性,不允許存儲相同的元素!

Set 是一個構造函數(shù),用于實例化實例:

let set = new Set()
set.add(1)//往set集合中添加元素1

除此以外,Set() 可以接受一個可迭代對象作為參數(shù),以作為實例初始化的數(shù)據(jù),但是會將這個可迭代對象中相同的內(nèi)容去除,然而,這也是數(shù)組去重的一個方法。

let set = new Set([1,2,2,1,4,3,5])
console.log(set)//Set(5) {1, 2, 4, 3, 5}

由元素唯一性這個特點,可以利用在數(shù)組去重上:

//方法一:
Array.from(new Set(arr)) //arr是待去重的數(shù)組

//方法二:
[...new Set(arr)]

太酷了吧,類似的,利用這個特性還能實現(xiàn)字符串相同字符的去重。

[...new Set(str)].join('')

然而,上面都是通過 Set 類型元素的唯一性來實現(xiàn)的,那么 Set 內(nèi)部是如何判斷元素是否唯一的呢?它的內(nèi)部使用了一個算法 Same-value-zero equality ,大致與全等運算符一致,區(qū)別在于這種算法認為 NaN 等于 NaN

二、實例屬性和方法

實例屬性

Set.prototype 上,定義了一個屬性 size 表示元素的個數(shù)。

let set = new Set([1,2,2,1,4,3,5])
console.log(set.size)//5

實例方法

Set 實例的方法可以分為兩類:操作方法和遍歷方法。

1.操作方法
  • Set.prototype.add(value) —— 添加某個值到 Set 的末尾,返回 Set 本身。

  • Set.prototype.delete(value) —— 刪除某個值,返回布爾值,表示是否刪除成功。

  • Set.prototype.has(value) —— 返回一個布爾值,表示該值是否為 Set 的元素。

  • Set.prototype.clear() —— 清除所有成員,沒有返回值。

值得一提的是,add() 方法的返回是 Set 本身,所以你應該能想到鏈式調(diào)用:

let set = new Set()
set.add(1).add(2).add(3)

2.遍歷方法
  • Set.prototype.keys() —— 返回鍵名的遍歷器

  • Set.prototype.values() —— 返回鍵值的遍歷器

  • Set.prototype.entries() —— 返回鍵值對的遍歷器

  • Set.prototype.forEach() —— 使用回調(diào)函數(shù)遍歷元素

由于 Set 結構沒有鍵名,只有鍵值(或者說鍵名和鍵值是同一個值),所以 keys 方法和 values 方法的行為完全一致。

三、WeakSet

WeakSetSet 的升級版,主要有兩個區(qū)別:

  • WeakSet 只能存儲引用類型,不能儲存基本類型數(shù)據(jù)。

  • WeakSet 中的引用類型都是弱引用。

首先,第一點很好理解,就是不能存儲基本類型的數(shù)據(jù):

const ws = new WeakSet()
ws.add(1)//報錯,Invalid value used in weak set

然后第二點,WeakSet 中的對象都是弱引用。也就意味著垃圾回收機制不會考慮 WeakSet 對該對象的引用,一旦在外部引用計數(shù)為0,那么就等著被垃圾回收機制處理。所以,WeakSet 適合臨時存放一組對象。

由于這個特征,WeakSet 中的成員是不適合引用的,因為它很可能會隨時被清理,然而,ES6 規(guī)定它是不可遍歷的。

WeakSet 中的方法也跟上面提到的 Set 基本一致,但是它沒有 size 屬性,沒有遍歷器方法。

感謝各位的閱讀,以上就是“es6的set怎么使用”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對es6的set怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!

新聞標題:es6的set怎么使用
瀏覽地址:http://www.muchs.cn/article16/ipppdg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、網(wǎng)站建設、Google建站公司、動態(tài)網(wǎng)站、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作