最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js中Map和Set的用法及區(qū)別實(shí)例詳解

 更新時間:2022年02月15日 16:22:07   作者:摸魚小公舉  
map和set一樣是關(guān)聯(lián)式容器,它們的底層容器都是紅黑樹,區(qū)別就在于map的值不作為鍵,鍵和值是分開的,下面這篇文章主要給大家介紹了關(guān)于js中Map和Set的用法及區(qū)別的相關(guān)資料,需要的朋友可以參考下

首先了解一下 Map

Map 是一組鍵值對的結(jié)構(gòu),和 JSON 對象類似。

(1) Map數(shù)據(jù)結(jié)構(gòu)如下

這里我們可以看到的是Map的數(shù)據(jù)結(jié)構(gòu)是一個鍵值對的結(jié)構(gòu)

(2) key 不僅可以是字符串還可以是對象

var obj ={name:"小如",age:9}
let map = new Map()
map.set(obj,"111")

打印結(jié)果如下

(3) Map常用語法如下

//初始化`Map`需要一個二維數(shù)組(請看 Map 數(shù)據(jù)結(jié)構(gòu)),或者直接初始化一個空`Map` 
let map = new Map();

//添加key和value值
map.set('Amy','女')
map.set('liuQi','男')

//是否存在key,存在返回true,反之為false
map.has('Amy') //true
map.has('amy') //false

//根據(jù)key獲取value
map.get('Amy') //女

//刪除 key為Amy的value
map.delete('Amy')
map.get('Amy') //undefined  刪除成功

(4) 一個key只能對應(yīng)一個value,多次對一個key放入value,后面的值會把前面的值覆蓋掉

var map =new Map
map.set('Amy',"女")
map.set('Amy',"男")
console.log(map) 

打印結(jié)果如下

再來了解一下 Set

Set 對象類似于數(shù)組,且成員的值都是唯一的

(1) 打印出的數(shù)據(jù)結(jié)構(gòu)如下

這里打印出來是一個對象

(2) 最常用來去重使用,去重方法有很多但是都沒有它運(yùn)行的快。

var arr=[1,3,4,2,5,1,4]
// 這里原本是一個對象用了es6的語法 轉(zhuǎn)化成了數(shù)組,就是轉(zhuǎn)化數(shù)組之前已經(jīng)過濾掉了重復(fù)的元素了
var arr2=[...new Set(arr)] //[1,3,4,2,5]

(3) Set常用語法如下

//初始化一個Set ,需要一個Array數(shù)組,要么空Set
var set = new Set([1,2,3,5,6]) 
console.log(set)  // {1, 2, 3, 5, 6}

//添加元素到Set中
set.add(7) //{1, 2, 3, 5, 6, 7}

//刪除Set中的元素
set.delete(3) // {1, 2, 5, 6, 7}

//檢測是否含有此元素,有為true,沒有則為false
set.has(2) //true

總結(jié)Map和Set的區(qū)別

(1) 這兩種方法具有極快的查找速度;那么下面我們來對比一下Map,Set,Array 的執(zhí)行時間

//首先初始化數(shù)據(jù)
var lng=100
var arr =new Array(lng).fill(2)
var set =new Set(arr)
let map =new Map()
for(var i=0;i<lng;i++){
arr[i]=i
map.set(i,arr[i])
}

// Array
console.time()
for(var j=0;j<lng;j++){
arr.includes(j)
}
console.timeEnd()  //default: 0.01220703125 ms


// Set
console.time()
for(var j=0;j<lng;j++){
set.has(j)
}
console.timeEnd()  // default: 0.005859375 ms

// Map
console.time()
for(var j=0;j<lng;j++){
map.has(j)
}
console.timeEnd()
// default: 0.007080078125 ms

通過以上幾種方法我們可以看到,Set執(zhí)行時間最短,那么查找速度最快,當(dāng)然了Set 和 Map的查找速度都很快想差不大,所以說這兩種方法具有極快的查找速度。

(2) 初始化需要的值不一樣,Map需要的是一個二維數(shù)組,而Set 需要的是一維 Array 數(shù)組

(3) Map 和 Set 都不允許鍵重復(fù)

(4) Map的鍵是不能修改,但是鍵對應(yīng)的值是可以修改的;Set不能通過迭代器來改變Set的值,因?yàn)镾et的值就是鍵。

(5) Map 是鍵值對的存在,值也不作為?。欢?Set 沒有 value 只有 key,value 就是 key;

結(jié)語:

Map 和 Set 數(shù)據(jù)結(jié)構(gòu)是ES6語法,最大優(yōu)點(diǎn)就是運(yùn)行時間少大大提高了性能。

到此這篇關(guān)于js中Map和Set用法及區(qū)別的文章就介紹到這了,更多相關(guān)js中Map和Set用法區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Javascript----文件操作

    Javascript----文件操作

    Javascript----文件操作...
    2007-01-01
  • javascript中閉包(Closure)詳解

    javascript中閉包(Closure)詳解

    閉包(closure)是Javascript語言的一個難點(diǎn),也是它的特色,很多高級應(yīng)用都要依靠閉包實(shí)現(xiàn)。小編之前一直糊里糊涂的,沒有能夠弄明白JavaScript的閉包到底是什么,有什么用,本文把自己的理解些出來分享一下,希望不理解JavaScript閉包的朋友們看了之后能夠理解閉包!
    2016-01-01
  • Javascript表單驗(yàn)證要注意的事項(xiàng)

    Javascript表單驗(yàn)證要注意的事項(xiàng)

    JavaScript 可用來在數(shù)據(jù)被送往服務(wù)器前對 HTML 表單中的這些輸入數(shù)據(jù)進(jìn)行驗(yàn)證。被 JavaScript 驗(yàn)證的這些典型的表單數(shù)據(jù)有:用戶是否已填寫表單中的必填項(xiàng)目?用戶輸入的郵件地址是否合法?用戶是否已輸入合法的日期?用戶是否在數(shù)據(jù)域 (numeric field) 中輸入了文本?
    2014-09-09
  • JS命名空間的另一種實(shí)現(xiàn)

    JS命名空間的另一種實(shí)現(xiàn)

    這篇文章介紹了js命名空間的另一種簡單實(shí)現(xiàn)方法,有需要的朋友可以參考一下
    2013-08-08
  • js實(shí)現(xiàn)的xml對象轉(zhuǎn)json功能示例

    js實(shí)現(xiàn)的xml對象轉(zhuǎn)json功能示例

    這篇文章主要介紹了js實(shí)現(xiàn)的xml對象轉(zhuǎn)json功能,結(jié)合實(shí)例形式分析了javascript轉(zhuǎn)換成xml所涉及的字符串、對象、數(shù)組、遍歷等操作技巧與使用方法,需要的朋友可以參考下
    2016-12-12
  • 微信小程序?qū)崿F(xiàn)選項(xiàng)卡的簡單實(shí)例

    微信小程序?qū)崿F(xiàn)選項(xiàng)卡的簡單實(shí)例

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)選項(xiàng)卡的簡單實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS中實(shí)現(xiàn)數(shù)組開頭添加元素

    JS中實(shí)現(xiàn)數(shù)組開頭添加元素

    這篇文章主要介紹了JS中實(shí)現(xiàn)數(shù)組開頭添加元素方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • JS簡單實(shí)現(xiàn)數(shù)組去重的方法分析

    JS簡單實(shí)現(xiàn)數(shù)組去重的方法分析

    這篇文章主要介紹了JS簡單實(shí)現(xiàn)數(shù)組去重的方法,結(jié)合具體實(shí)例形式分析了javascript數(shù)組遍歷、判斷實(shí)現(xiàn)去重復(fù)的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-10-10
  • 動態(tài)加載JavaScript文件的兩種方法

    動態(tài)加載JavaScript文件的兩種方法

    第一種利用ajax方式,第二種是動靜創(chuàng)建一個script標(biāo)簽,配置其src屬性,經(jīng)過把script標(biāo)簽拔出到頁面head來加載js,感樂趣的網(wǎng)友可以看下
    2016-04-04
  • js原生Ajax的封裝和原理詳解

    js原生Ajax的封裝和原理詳解

    這篇文章主要為大家詳細(xì)介紹了js原生Ajax的封裝和原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論

万州区| 梅河口市| 文登市| 永平县| 镇江市| 安多县| 西安市| 溧阳市| 西青区| 瓦房店市| 内乡县| 炉霍县| 游戏| 特克斯县| 娱乐| 海淀区| 海原县| 齐河县| 荆门市| 万年县| 大城县| 南开区| 饶平县| 龙山县| 集安市| 辰溪县| 琼中| 临夏县| 措勤县| 儋州市| 玉环县| 米脂县| 蒲城县| 鹤山市| 临沧市| 新余市| 大兴区| 阿拉善右旗| 南郑县| 西宁市| 古田县|