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

JavaScript中Map和Set數(shù)據(jù)結(jié)構(gòu)使用方法詳解

 更新時(shí)間:2025年03月26日 08:46:26   作者:紅蝦程序員  
這篇文章主要介紹了JavaScript中Map和Set數(shù)據(jù)結(jié)構(gòu)使用方法的相關(guān)資料,Map是一種鍵值對(duì)集合,支持任意類(lèi)型的鍵和值,保留插入順序,并提供多種遍歷和操作方法,Set是一種唯一值集合,通過(guò)哈希算法保證唯一性,提供添加、刪除、檢查元素的方法,需要的朋友可以參考下

一、Map

1. 定義與特點(diǎn)

Map 是 JavaScript ES6 中新增的一種數(shù)據(jù)結(jié)構(gòu),它類(lèi)似于對(duì)象,但比對(duì)象更強(qiáng)大、更靈活。Map是一種鍵值對(duì)集合,可以存儲(chǔ)任意類(lèi)型的鍵和值,與普通對(duì)象不同,Map保留了鍵的原始插入順序,并支持鏈?zhǔn)秸{(diào)用。Map的鍵可以是任何類(lèi)型的數(shù)據(jù),包括對(duì)象和函數(shù)。

2. 創(chuàng)建Map對(duì)象

  • 使用new Map()構(gòu)造函數(shù)

  • 使用字面量語(yǔ)法

 const map = new Map();
 const map = new Map([['key1', 'value1'], ['key2', 'value2']]);

3. 常用方法

  • 添加鍵值對(duì)set(key, value)

  • 獲取鍵對(duì)應(yīng)的值get(key)

  • 檢查鍵是否存在has(key)

  • 刪除鍵值對(duì)delete(key)

  • 清空Mapclear()

  • 獲取Map大小size

 map.set('key1', 'value1');
 console.log(map.get('key1')); // 輸出: value1
 console.log(map.has('key1')); // 輸出: true
 map.delete('key1');
 map.clear();
 console.log(map.size); // 輸出: 0(當(dāng)前Map中鍵值對(duì)的數(shù)量)

4. 遍歷Map

Map提供了多種遍歷方法:

  • forEach():遍歷Map中的每個(gè)鍵值對(duì),接受一個(gè)回調(diào)函數(shù)。

  • for...of方法:keys() :返回一個(gè)包含所有鍵的迭代器,values() :返回一個(gè)包含所有值的迭代器,entries() :返回一個(gè)包含所有鍵值對(duì)的迭代器。

 const map = new Map([['key1', 'value1'], ['key2', 'value2']]);
 ?
 // 使用 forEach 方法遍歷
 map.forEach((value, key) => {
     console.log(key, value);
 });
 ?
 // 使用 for...of 循環(huán)遍歷
 for (let [key, value] of map) {
     console.log(key, value);
 }
 ?
 // 使用 keys()、values() 和 entries() 方法遍歷
 for (let key of map.keys()) {
     console.log(key);
 }
 ?
 for (let value of map.values()) {
     console.log(value);
 }
 ?
 for (let [key, value] of map.entries()) {
     console.log(key, value);
 }

5. Map與對(duì)象的區(qū)別

特性Map對(duì)象
鍵的類(lèi)型可以是任何數(shù)據(jù)類(lèi)型,包括對(duì)象、函數(shù)、基本類(lèi)型等只能是字符串或符號(hào)類(lèi)型
鍵的順序按插入順序保留鍵值對(duì)鍵的遍歷順序可能會(huì)根據(jù)不同的 JavaScript 引擎有所不同
大小屬性有 size 屬性,可以直接獲取鍵值對(duì)的數(shù)量沒(méi)有內(nèi)置的 size 屬性,需要手動(dòng)計(jì)算
迭代方式可直接迭代,使用 for...of 循環(huán)或 forEach 方法需要先獲取鍵數(shù)組,然后進(jìn)行迭代
默認(rèn)鍵沒(méi)有默認(rèn)鍵繼承自 Object.prototype,可能會(huì)有默認(rèn)鍵
性能在頻繁增刪鍵值對(duì)的操作中通常比對(duì)象更高效適用于結(jié)構(gòu)化的靜態(tài)數(shù)據(jù)
序列化/解析沒(méi)有內(nèi)置的序列化或解析支持,但可以自定義實(shí)現(xiàn)可以使用 JSON.stringify 和 JSON.parse 進(jìn)行序列化和解析
創(chuàng)建方式使用 new Map() 構(gòu)造函數(shù)或傳遞可迭代對(duì)象初始化使用字面量語(yǔ)法 {} 或構(gòu)造函數(shù) new Object() 創(chuàng)建
方法提供 setgethasdeleteclearkeysvaluesentries 等方法提供 hasOwnPropertyin 運(yùn)算符等方法

二、Set

1. 定義與特點(diǎn)

Set 也是 JavaScript ES6 中新增的一種數(shù)據(jù)結(jié)構(gòu),它類(lèi)似于數(shù)組,但成員的值都是唯一的,沒(méi)有重復(fù)的值。Set內(nèi)部通過(guò)哈希算法保證元素的唯一性和快速查找。

2. 創(chuàng)建Set對(duì)象

  • 使用new Set()構(gòu)造函數(shù)

  • 使用字面量語(yǔ)法

 const set = new Set();
 const set = new Set([1, 2, 3, 4]);

3. 常用方法

  • 添加元素add(value)

  • 刪除元素delete(value)

  • 檢查元素是否存在has(value)

  • 清空Setclear()

  • 獲取Set大小size

 set.add(5);
 set.delete(5);
 console.log(set.has(5)); // 輸出: false
 set.clear();
 console.log(set.size); // 輸出: 0(當(dāng)前Set中元素的數(shù)量)

4. 遍歷Set

Set提供了多種遍歷方法:

  • forEach():遍歷Set中的每個(gè)元素,接受一個(gè)回調(diào)函數(shù)。

  • for...of方法:keys():返回一個(gè)包含所有元素的迭代器(Set本身就是無(wú)序的,因此keys()values()返回的結(jié)果相同),values():返回一個(gè)包含所有元素的迭代器,entries():返回一個(gè)包含所有鍵值對(duì)的迭代器(Set中沒(méi)有鍵,因此返回的結(jié)果與values()相同)。

 const set = new Set([1, 2, 3, 4]);
 ?
 // 使用 forEach 方法遍歷
 set.forEach((value) => {
     console.log(value);
 });
 ?
 // 使用 for...of 循環(huán)遍歷
 for (let value of set) {
     console.log(value);
 }
 ?
 // 使用 values()、keys() 和 entries() 方法遍歷
 for (let value of set.values()) {
     console.log(value);
 }
 ?
 for (let key of set.keys()) {
     console.log(key);
 }
 ?
 for (let [key, value] of set.entries()) {
     console.log(key, value);
 }

5. 應(yīng)用場(chǎng)景

數(shù)據(jù)去重

Set對(duì)象的一個(gè)核心用途是去除重復(fù)值。當(dāng)需要從數(shù)組中移除重復(fù)項(xiàng)時(shí),可以使用Set來(lái)實(shí)現(xiàn)。

 const numbers = [1, 2, 3, 4, 5, 5, 6, 6, 6];
 const uniqueNumbers = new Set(numbers);
 console.log(uniqueNumbers); // 輸出: Set {1, 2, 3, 4, 5, 6}

這種用法在處理數(shù)據(jù)時(shí)非常常見(jiàn),特別是在需要確保集合中元素唯一性的情況下。

集合運(yùn)算

Set對(duì)象支持多種集合運(yùn)算,包括交集、并集和差集。

 const setA = new Set([1, 2, 3]);
 const setB = new Set([3, 4, 5]);
 const intersection = new Set([...setA].filter(x => setB.has(x)));
 console.log(intersection); // 輸出: Set {3}

通過(guò)這些運(yùn)算,可以方便地對(duì)集合進(jìn)行數(shù)學(xué)上的操作。

遍歷集合

Set對(duì)象提供了多種方法來(lái)遍歷集合中的元素,例如forEach()、values()keys()等,這些方法使得遍歷和操作集合更加靈活。

 const set = new Set([1, 2, 3]);
 set.forEach(value => console.log(value));
 ?
 const values = Array.from(set.values());
 console.log(values); // 輸出: [1, 2, 3]
 ?
 const keys = Array.from(set.keys());
 console.log(keys); // 輸出: [1, 2, 3]

總結(jié) 

到此這篇關(guān)于JavaScript中Map和Set數(shù)據(jù)結(jié)構(gòu)使用方法的文章就介紹到這了,更多相關(guān)JS中Map和Set數(shù)據(jù)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序 騰訊地圖顯示偏差問(wèn)題解決

    微信小程序 騰訊地圖顯示偏差問(wèn)題解決

    這篇文章主要介紹了微信小程序 騰訊地圖顯示偏差問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 微信小程序webview與h5通過(guò)postMessage實(shí)現(xiàn)實(shí)時(shí)通訊的實(shí)現(xiàn)

    微信小程序webview與h5通過(guò)postMessage實(shí)現(xiàn)實(shí)時(shí)通訊的實(shí)現(xiàn)

    這篇文章主要介紹了微信小程序webview與h5通過(guò)postMessage實(shí)現(xiàn)實(shí)時(shí)通訊的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java 正則表達(dá)式學(xué)習(xí)總結(jié)和一些小例子

    Java 正則表達(dá)式學(xué)習(xí)總結(jié)和一些小例子

    字符串處理是許多程序中非常重要的一部分,它們可以用于文本顯示,數(shù)據(jù)表示,查找鍵和很多目的.在Unix下,用戶可以使用正則表達(dá)式的強(qiáng)健功能實(shí)現(xiàn)這些 目的
    2012-09-09
  • JavaScript使用padStart()方法進(jìn)行字符串填充的實(shí)戰(zhàn)指南

    JavaScript使用padStart()方法進(jìn)行字符串填充的實(shí)戰(zhàn)指南

    在編程實(shí)踐中,字符串填充是高頻操作需求,無(wú)論是格式化輸出、數(shù)據(jù)對(duì)齊還是生成固定格式標(biāo)識(shí)符,都需要高效可靠的填充方案,本文將深入探討JavaScript中最優(yōu)雅的字符串填充方案——padStart()方法,需要的朋友可以參考下
    2025-10-10
  • 解決微信內(nèi)置瀏覽器返回上一頁(yè)強(qiáng)制刷新問(wèn)題方法

    解決微信內(nèi)置瀏覽器返回上一頁(yè)強(qiáng)制刷新問(wèn)題方法

    微信內(nèi)置瀏覽器在返回上一頁(yè)面,且上一頁(yè)面包含AJAX代碼時(shí),頁(yè)面就會(huì)被強(qiáng)制刷新,極度影響用戶體驗(yàn)。而我們想要的效果是:返回上一頁(yè)面時(shí),頁(yè)面還停留在原來(lái)的狀態(tài),AJAX獲取到的數(shù)據(jù)還在,滾動(dòng)條也在原來(lái)的位置。下面跟著小編一起來(lái)看下吧
    2017-02-02
  • uni-app 滾動(dòng)到指定位置的操作方法

    uni-app 滾動(dòng)到指定位置的操作方法

    這篇文章主要介紹了uni-app 滾動(dòng)到指定位置的操作方法,其中方法一是使用標(biāo)簽,可以將頁(yè)面橫向(或縱向)滾動(dòng)到指定位置還有其他多種方法,需要的朋友可以參考下
    2024-05-05
  • 微信小程序全局配置以及頁(yè)面配置詳解

    微信小程序全局配置以及頁(yè)面配置詳解

    微信小程序中我們創(chuàng)建頁(yè)面時(shí)會(huì)自動(dòng)創(chuàng)建四個(gè)文件分別為js文件,wxml文件wxss文件最后還有我們今天的主角json配置文件,下面這篇文章主要給大家介紹了關(guān)于微信小程序全局配置以及頁(yè)面配置的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • JavaScript事件類(lèi)型中焦點(diǎn)、鼠標(biāo)和滾輪事件詳解

    JavaScript事件類(lèi)型中焦點(diǎn)、鼠標(biāo)和滾輪事件詳解

    這篇文章主要為大家詳細(xì)介紹了JavaScript事件類(lèi)型中焦點(diǎn)、鼠標(biāo)和滾輪事件,以及注意事項(xiàng),感興趣的小伙伴們可以參考一下
    2016-01-01
  • Lottie動(dòng)畫(huà)前端開(kāi)發(fā)使用技巧

    Lottie動(dòng)畫(huà)前端開(kāi)發(fā)使用技巧

    這篇文章主要為大家介紹了Lottie動(dòng)畫(huà)前端開(kāi)發(fā)使用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • JavaScript實(shí)現(xiàn)獲得所有兄弟節(jié)點(diǎn)的方法

    JavaScript實(shí)現(xiàn)獲得所有兄弟節(jié)點(diǎn)的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)獲得所有兄弟節(jié)點(diǎn)的方法,實(shí)例分析了javascript節(jié)點(diǎn)遍歷的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

静海县| 甘南县| 科技| 特克斯县| 普宁市| 瓦房店市| 阿克陶县| 文成县| 安龙县| 穆棱市| 苏州市| 梅州市| 龙井市| 龙胜| 巨鹿县| 八宿县| 金溪县| 靖远县| 屯留县| 云南省| 师宗县| 修水县| 河西区| 金寨县| 涡阳县| 遂昌县| 益阳市| 齐齐哈尔市| 台东市| 苍南县| 二连浩特市| 中阳县| 鹤岗市| 南昌市| 嫩江县| 潼关县| 蓬溪县| 万安县| 宝鸡市| 鲜城| 文山县|