目錄
字典(Map):
總結**:**
首頁 web前端 前端問答 es6的set和map的差別是什麼

es6的set和map的差別是什麼

Apr 15, 2022 pm 06:37 PM
es6 map set

區別:1、set指的是「集合」結構,而Map指的是「字典」結構;2、set是以「[value, value]」的形式儲存元素,而Map是以「[key, value]」的形式儲存;3、Map可用get()透過鍵查找特定值並返回,而set不行。

es6的set和map的差別是什麼

本教學操作環境: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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

springboot怎麼讀取yml檔案中的list列表、陣列、map集合和對象 springboot怎麼讀取yml檔案中的list列表、陣列、map集合和對象 May 11, 2023 am 10:46 AM

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標籤功能 Feb 26, 2024 pm 07:48 PM

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

Java怎麼設定過期時間的map Java怎麼設定過期時間的map May 04, 2023 am 10:13 AM

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

async是es6還是es7的 async是es6還是es7的 Jan 29, 2023 pm 05:36 PM

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

es5和es6怎麼實現陣列去重 es5和es6怎麼實現陣列去重 Jan 16, 2023 pm 05:09 PM

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

Java中Map實作執行緒安全的方式有哪些 Java中Map實作執行緒安全的方式有哪些 Apr 19, 2023 pm 07:52 PM

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

Java中將物件與Map相互轉換的實作方式 - 使用BeanMap Java中將物件與Map相互轉換的實作方式 - 使用BeanMap May 08, 2023 pm 03:49 PM

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的效能 Mar 23, 2024 pm 12:06 PM

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

See all articles