欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(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í)間

//首先初始化數(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í)行時(shí)間最短,那么查找速度最快,當(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)行時(shí)間少大大提高了性能。

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

相關(guān)文章

  • 微信小程序時(shí)間選擇插件使用詳解

    微信小程序時(shí)間選擇插件使用詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序時(shí)間選擇插件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • JavaScript實(shí)現(xiàn)實(shí)時(shí)更新系統(tǒng)時(shí)間的實(shí)例代碼

    JavaScript實(shí)現(xiàn)實(shí)時(shí)更新系統(tǒng)時(shí)間的實(shí)例代碼

    本文給大家分享javascript實(shí)現(xiàn)實(shí)時(shí)更新系統(tǒng)時(shí)間的實(shí)例代碼,代碼簡單易懂,非常不錯,具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-04-04
  • JavaScript報(bào)錯:Uncaught TypeError: XXX is not iterable的解決方法

    JavaScript報(bào)錯:Uncaught TypeError: XXX is 

    在 JavaScript 編程中,“Uncaught TypeError: XYZ is not iterable” 是一種常見的錯誤,這種錯誤通常發(fā)生在試圖對一個非可迭代對象進(jìn)行迭代操作時(shí),了解這種錯誤的成因和解決方法,對于編寫健壯的代碼至關(guān)重要,需要的朋友可以參考下
    2024-07-07
  • javascript判斷并獲取注冊表中可信任站點(diǎn)的方法

    javascript判斷并獲取注冊表中可信任站點(diǎn)的方法

    這篇文章主要介紹了javascript判斷并獲取注冊表中可信任站點(diǎn)的方法,可實(shí)現(xiàn)針對域名和IP的可信任站點(diǎn)判斷功能,需要的朋友可以參考下
    2015-06-06
  • Javascript this 的一些學(xué)習(xí)總結(jié)

    Javascript this 的一些學(xué)習(xí)總結(jié)

    相信有C++、C#或Java等編程經(jīng)驗(yàn)的各位,對于this關(guān)鍵字再熟悉不過了。由于Javascript是一種面向?qū)ο蟮木幊陶Z言,它和C++、C#或Java一樣都包含this關(guān)鍵字,接下來我們將向大家介紹Javascript中的this關(guān)鍵字
    2012-08-08
  • mui上拉加載功能實(shí)例詳解

    mui上拉加載功能實(shí)例詳解

    最近小編在做移動端的項(xiàng)目,用到了mui的上拉加載功能,今天小編給大家整理一下分享到腳本之家平臺,需要的朋友參考下
    2017-04-04
  • JS實(shí)現(xiàn)數(shù)組去重的常用方法

    JS實(shí)現(xiàn)數(shù)組去重的常用方法

    在JavaScript開發(fā)中,數(shù)組操作是不可或缺的一部分,數(shù)組去重作為數(shù)據(jù)處理的一個常見需求,旨在從一個可能包含重復(fù)元素的數(shù)組中移除重復(fù)項(xiàng),只保留唯一值,本文將詳細(xì)介紹幾種常見的數(shù)組去重方法,并結(jié)合實(shí)際應(yīng)用場景進(jìn)行探討,需要的朋友可以參考下
    2024-12-12
  • JavaScript實(shí)現(xiàn)簡單拖拽效果

    JavaScript實(shí)現(xiàn)簡單拖拽效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡單拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 微信小程序事件對象中e.target和e.currentTarget的區(qū)別詳解

    微信小程序事件對象中e.target和e.currentTarget的區(qū)別詳解

    這篇文章主要介紹了微信小程序事件對象中e.target和e.currentTarget的區(qū)別詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • javascript動態(tài)加載三

    javascript動態(tài)加載三

    首先是通過同步策略來實(shí)現(xiàn)模塊加載與回調(diào)函數(shù)之間進(jìn)行分離,接著是通過異步策略來實(shí)現(xiàn)模塊加載與回調(diào)函數(shù)之間進(jìn)行分離
    2012-08-08

最新評論