es6的set和map的差別是什麼
區別:1、set指的是「集合」結構,而Map指的是「字典」結構;2、set是以「[value, value]」的形式儲存元素,而Map是以「[key, value]」的形式儲存;3、Map可用get()透過鍵查找特定值並返回,而set不行。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
簡述:
- Set 和 Map 主要的應用場景在於 資料重組 和 資料儲存。
- Set 是一種稱為集合的資料結構,Map 是一種稱為字典的資料結構。
集合與字典的區別:
- #共同點:集合、字典可以儲存不重複的值
- #不同點:集合是以[value , 值]的形式儲存元素,字典是以[key, 值] 的形式儲存
集合(Set):
ES6 新增的一種新的資料結構,類似數組,但成員是唯一且無序的,沒有重複的值。
Set 本身就是一種建構函數,用來產生 Set 資料結構。
Set 物件允許你儲存任何類型的唯一值,無論是原始值或是物件參考。
const s = new Set() [1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x)) for (let i of s) { console.log(i) // 1 2 3 4 } // 去重数组的重复对象 let arr = [1, 2, 3, 2, 1, 1] [... new Set(arr)] // [1, 2, 3]
注意:向 Set 加入值的時候,不會發生型別轉換,所以`5`和`"5"`是兩個不同的值。 Set 內部判斷兩個值是否不同,使用的演算法叫做“Same-value-zero equality”,它類似於**精確相等**運算子(`===`),主要的區別是**`NaN`等於自身,而精確相等運算子認為`NaN`不等於自身。 **
let set = new Set(); let a = NaN; let b = NaN; set.add(a); set.add(b); set // Set {NaN} let set1 = new Set() set1.add(5) set1.add('5') console.log([...set1]) // [5, "5"]
操作方法:
add(value):新增,相當於 array裡的push。
delete(value):存在即刪除集合中value。
has(value):判斷集合中是否存在 value。
clear():清空集合。
遍歷方法:遍歷方法(遍歷順序為插入順序)
#keys():傳回一個包含集合中所有鍵的迭代器。
values():傳回一個包含集合中所有值得迭代器。
entries():傳回一個包含Set物件中所有元素得鍵值對迭代器。
forEach(callbackFn, thisArg):用於對集合成員執行callbackFn操作,如果提供了 thisArg 參數,回呼中的this會是這個參數,沒有傳回值。
字典(Map):
是一組鍵值對的結構,具有極快的查找速度。
const m = new Map() const o = {p: 'haha'} m.set(o, 'content') m.get(o) // content m.has(o) // true m.delete(o) // true m.has(o) // false
操作方法:
- set(key, 值):在字典中新增元素。
- get(key):透過鍵找出特定的數值並傳回。
- has(key):判斷字典中是否存在鍵key。
- delete(key):透過鍵 key 從字典中移除對應的資料。
- clear():將這個字典中的所有元素刪除。
遍歷方法:
- Keys():將字典中包含的所有鍵名以迭代器形式傳回。
- values():將字典中包含的所有數值以迭代器形式傳回。
- entries():傳回所有成員的迭代器。
- forEach():遍歷字典的所有成員。
總結**:**
Set:
指的是「集合」結構
[value, value],鍵值與鍵名是一致的(或只有鍵值,沒有鍵名)。
- 不能透過鍵來尋找特定值
Map:
#指的是「字典」結構
# [key, value],鍵值與鍵名是不一致的
- #Map可用get()透過鍵來找出特定值並傳回
【相關推薦:javascript影片教學、web前端】
以上是es6的set和map的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

application.yml定義list集合第一種方式使用@ConfigurationProperties註解獲取list集合的所有值type:code:status:-200-300-400-500編寫配置文件對應的實體類,這裡需要注意的是,定義list集合,先定義一個配置類別Bean,然後使用註解@ConfigurationProperties註解來取得list集合值,這裡給大家講解下相關註解的作用@Component將實體類別交給Spring管理@ConfigurationPropertie

MyBatis動態SQL標籤解讀:Set標籤用法詳解MyBatis是一個優秀的持久層框架,它提供了豐富的動態SQL標籤,可以靈活地建構資料庫操作語句。其中,Set標籤是用來產生UPDATE語句中SET子句的標籤,在更新作業中非常常用。本文將詳細解讀MyBatis中Set標籤的用法,以及透過具體的程式碼範例來示範其功能。什麼是Set標籤Set標籤用於MyBati

一、技術背景在實際的專案開發中,我們經常會使用到快取中間件(如redis、MemCache等)來幫助我們提高系統的可用性和健全性。但很多時候如果專案比較簡單,就沒有必要為了使用快取而專門引入Redis等等中間件來加重系統的複雜性。那麼Java本身有沒有好用的輕量級的快取元件呢。答案當然是有嘍,而且方法不只一種。常見的解決方法有:ExpiringMap、LoadingCache及基於HashMap的封裝三種。二、技術效果實現快取的常見功能,如過時刪除策略熱點資料預熱三、ExpiringMap3.

async是es7的。 async和await是ES7中新增內容,是對於非同步操作的解決方案;async/await可以說是co模組和生成器函數的語法糖,用更清晰的語意解決js非同步程式碼。 async顧名思義是「非同步」的意思,async用於聲明一個函數是異步的;async和await有一個嚴格規定,兩者都離不開對方,且await只能寫在async函數中。

es5中可以利用for語句和indexOf()函數來實現數組去重,語法“for(i=0;i<數組長度;i++){a=newArr.indexOf(arr[i]);if(a== -1){...}}」。在es6中可以利用擴充運算子、Array.from()和Set來去重;需要先將陣列轉為Set物件來去重,然後利用擴充運算子或Array.from()函數來將Set物件轉回數組即可。

方式1.使用HashtableMaphashtable=newHashtable();這是所有人最先想到的,那為什麼它是線程安全的?那就看看它的原始碼,我們可以看出我們常用的put,get,containsKey等方法都是同步的,所以它是線程安全的publicsynchronizedbooleancontainsKey(Objectkey){Entrytab[]=table;inthash=key.hashCode( );intindex=(hash&0x7FFFFFFF)%tab.leng

javabean與map的轉換有很多種方式,例如:1、透過ObjectMapper先將bean轉換為json,再將json轉換為map,但是這種方法比較繞,且效率很低,經測試,循環轉換10000個bean ,就需要12秒! ! !不建議使用2、透過Java反射,取得bean類別的屬性和值,再轉換到map對應的鍵值對中,這種方法次之,但稍微有點麻煩3、透過net.sf.cglib.beans.BeanMap類別中的方法,這種方式效率極高,它跟第二種方式的區別就是因為使用了緩存,初次創建bean時需要初始化,

最佳化Go語言map的效能在Go語言中,map是一種非常常用的資料結構,用來儲存鍵值對的集合。然而,在處理大量資料時,map的效能可能受到影響。為了提高map的效能,我們可以採取一些最佳化措施來減少map操作的時間複雜度,從而提升程式的執行效率。 1.預先分配map的容量在建立map時,我們可以透過預先分配容量來減少map擴容的次數,提高程式的效能。一般情況下,我們
