Set是一種用於儲存有序資料的資料結構,Set中的元素具有唯一性,不允許儲存相同的元素;Set()可以接受一個可迭代物件作為參數,但是會將這個可迭代物件中相同的內容移除,因此可用於去除重複元素,預防「Array.from(new Set(arr))」或「[...new Set(arr)]」。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
一、基本用法
Set
是ES6
提供的一種新的資料結構,它跟陣列一樣用於儲存有序的數據,但是沒有隨機存取的能力,也就是說,不能像數組一樣透過索引來獲取具體的某個元素。 除此之外,最重要的是,Set
中的元素具有唯一性,不允許儲存相同的元素!
Set
是一個建構函數,用於實例化實例:
let set = new Set() set.add(1)//往set集合中添加元素1
除此以外,Set()
可以接受一個可迭代物件作為參數,以作為實例初始化的數據,但是會將這個可迭代物件中相同的內容去除,然而,這也是數組去重的一個方法。
let set = new Set([1,2,2,1,4,3,5]) console.log(set)//Set(5) {1, 2, 4, 3, 5}
由元素唯一性這個特點,可以利用在數組去重上:
//方法一: Array.from(new Set(arr)) //arr是待去重的数组 //方法二: [...new Set(arr)]
太酷了吧,類似的,利用這個特性還能實現字串相同字元的去重。
[...new Set(str)].join('')
然而,上面都是透過 Set
類型元素的唯一性來實現的,那麼 Set
內部是如何判斷元素是否唯一的呢?它的內部使用了一個演算法 Same-value-zero equality
,大致與全等運算子一致,差異在於這種演算法認為 NaN
等於 NaN
。
二、實例屬性與方法
實例屬性
在Set.prototype
上,定義了一個屬性size
表示元素的個數。
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
本身,所以你應該可以想到鍊式呼叫:
let set = new Set() set.add(1).add(2).add(3)
2.遍歷方法
-
Set.prototype.keys()
—— 傳回鍵名的遍歷器 -
#Set.prototype.values()
—— 傳回鍵值的遍歷器 -
Set.prototype.entries()
—— 傳回鍵值對的遍歷器 -
Set.prototype.forEach()
—— 使用回呼函數遍歷元素
由於Set
結構沒有鍵名,只有鍵值(或者說鍵名和鍵值是同一個值),所以keys
方法和values
方法的行為完全一致。
三、WeakSet
#WeakSet
是Set
的升級版,主要有兩個區別:
-
WeakSet
只能儲存引用類型,不能儲存基本類型資料。 -
WeakSet
中的參考類型都是弱引用。
首先,第一點很好理解,就是無法儲存基本類型的資料:
const ws = new WeakSet() ws.add(1)//报错,Invalid value used in weak set
然後第二點,WeakSet
中的物件都是弱引用。也意味著垃圾回收機制不會考慮 WeakSet
對該物件的引用,一旦在外部引用計數為0,那麼就等著被垃圾回收機制處理。所以,WeakSet
適合暫時存放一組物件。
由於這個特徵,WeakSet
中的成員是不適合引用的,因為它很可能隨時會被清理,然而,ES6
規定它是不可遍歷的。
WeakSet
中的方法也跟著上面提到的 Set
基本上一致,但是它沒有 size
屬性,沒有遍歷器方法。
【相關推薦:javascript影片教學、程式設計影片】
以上是es6的set有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

HTML與React可以通過JSX無縫整合,構建高效的用戶界面。 1)使用JSX嵌入HTML元素,2)利用虛擬DOM優化渲染性能,3)通過組件化管理和渲染HTML結構。這種整合方式不僅直觀,還能提升應用性能。

React通過state和props高效渲染數據,並通過合成事件系統處理用戶事件。 1)使用useState管理狀態,如計數器示例。 2)事件處理通過在JSX中添加函數實現,如按鈕點擊。 3)渲染列表需使用key屬性,如TodoList組件。 4)表單處理需使用useState和e.preventDefault(),如Form組件。

React通過HTTP請求與服務器交互,實現數據的獲取、發送、更新和刪除。 1)用戶操作觸發事件,2)發起HTTP請求,3)處理服務器響應,4)更新組件狀態並重新渲染。

React是一種用於構建用戶界面的JavaScript庫,通過組件化開發和虛擬DOM提高效率。 1.組件與JSX:使用JSX語法定義組件,增強代碼直觀性和質量。 2.虛擬DOM與渲染:通過虛擬DOM和diff算法優化渲染性能。 3.狀態管理與Hooks:Hooks如useState和useEffect簡化狀態管理和副作用處理。 4.使用示例:從基本表單到高級的全局狀態管理,使用ContextAPI。 5.常見錯誤與調試:避免狀態管理不當和組件更新問題,使用ReactDevTools調試。 6.性能優化與最佳

reactisafrontendlibrary,focusedonBuildingUserInterfaces.itmanagesuistateandupdatesefficefited avelyuseVirusity diftualdom,and internactSwithBackendServIcesViaApisforDatahandling,butdoesnotprocessorcorsorsorstoredordordordoredairself。

React可以嵌入到HTML中來增強或完全重寫傳統的HTML頁面。 1)使用React的基本步驟包括在HTML中添加一個根div,並通過ReactDOM.render()渲染React組件。 2)更高級的應用包括使用useState管理狀態和實現複雜的UI交互,如計數器和待辦事項列表。 3)優化和最佳實踐包括代碼分割、惰性加載和使用React.memo和useMemo來提高性能。通過這些方法,開發者可以利用React的強大功能來構建動態和響應迅速的用戶界面。

React是構建現代前端應用的JavaScript庫。 1.它採用組件化和虛擬DOM優化性能。 2.組件使用JSX定義,狀態和屬性管理數據。 3.Hooks簡化生命週期管理。 4.使用ContextAPI管理全局狀態。 5.常見錯誤需調試狀態更新和生命週期。 6.優化技巧包括Memoization、代碼拆分和虛擬滾動。

React的未來將專注於組件化開發的極致、性能優化和與其他技術棧的深度集成。 1)React將進一步簡化組件的創建和管理,推動組件化開發的極致。 2)性能優化將成為重點,特別是在大型應用中的表現。 3)React將與GraphQL和TypeScript等技術深度集成,提升開發體驗。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境