TypeScript中Map對(duì)象使用及Map與字典的區(qū)別詳解
(1)Map的基礎(chǔ)操作
//初始化Map的鍵和值,它們可以是任何類(lèi)型,注意Map中所有的鍵或所有的值必須是相同類(lèi)型 let nameList = new Map([ ["key1", 1], ["key2", 2] ]) //通過(guò)map.set設(shè)置鍵值對(duì),返回該Map對(duì)象 nameList.set("key3", 3) console.log(nameList) //通過(guò)map.get獲取鍵對(duì)應(yīng)的值,如果不存在,則返回undefined var getmap = nameList.get("key2") var getmap2 = nameList.get("key999") console.log(getmap) console.log(getmap2) //通過(guò)map.delete()刪除鍵值對(duì),刪除則返回true,未刪除則返回false var deletemap = nameList.delete("key2") console.log(deletemap) console.log(nameList) //通過(guò)has()判斷 Map中是否包含所查找的鍵值,返回布爾型 var hasmap = nameList.has("key1") var hasmap2 = nameList.has("key999") console.log(hasmap) console.log(hasmap2) //通過(guò)clear()移除所有鍵值對(duì),清楚Map var clearmap = nameList.clear() console.log(nameList)
(2)Map的迭代
Map的迭代有多種方式
1.使用for...of進(jìn)行迭代,返回一個(gè)包含鍵值對(duì)的數(shù)組
let myMap = new Map() myMap.set(0, "zero") myMap.set(1, "one") for (let [key, value] of myMap) { console.log(key, value) }
2.使用forEach進(jìn)行迭代,它會(huì)接受一個(gè)回調(diào)函數(shù)作為參數(shù)
let myMap = new Map() myMap.set(0, "zero") myMap.set(1, "one") myMap.forEach((value, key) => { console.log(key, value) })
3.使用 keys 方法迭代所有的鍵
let myMap = new Map() myMap.set(0, "zero") myMap.set(1, "one") for (let key of myMap.keys()) { console.log(key) }
4.使用 values 方法迭代所有的值
let myMap = new Map() myMap.set(0, "zero") myMap.set(1, "one") for (let value of myMap.values()) { console.log(value) }
需要注意的是,使用 for...of
或 forEach
迭代時(shí),鍵值對(duì)的順序與添加順序一致;而使用 keys
或 values
迭代時(shí),順序與添加順序無(wú)關(guān)。
(3)Map與字典的區(qū)別
在 TypeScript 中,Map
和字典(也叫關(guān)聯(lián)數(shù)組或哈希表)都可以用來(lái)存儲(chǔ)鍵值對(duì)。它們的主要區(qū)別在于內(nèi)部實(shí)現(xiàn)方式和一些特性上。
Map
是 JavaScript 中的一個(gè)原生類(lèi),是一個(gè)可迭代的鍵值對(duì)的集合,其中每個(gè)鍵都是唯一的。它的鍵和值可以是任意類(lèi)型的,可以通過(guò) set
方法來(lái)添加新的鍵值對(duì),通過(guò) get
方法來(lái)獲取值。Map
還有一些特殊的方法和屬性,比如 size
屬性,clear()
方法和 forEach()
方法等。在 TypeScript 中,我們可以直接使用 Map
類(lèi)型來(lái)定義一個(gè) Map 對(duì)象,例如:
const map = new Map<string, number>(); map.set('apple', 1); map.set('banana', 2); map.set('orange', 3);
字典(或關(guān)聯(lián)數(shù)組或哈希表)則是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),也可以用來(lái)存儲(chǔ)鍵值對(duì),其中每個(gè)鍵也是唯一的。字典的實(shí)現(xiàn)方式一般是通過(guò)散列表(hash table)來(lái)實(shí)現(xiàn)的。在 TypeScript 中,我們通常會(huì)使用對(duì)象來(lái)模擬字典,例如:
const dict = { apple: 1, banana: 2, orange: 3, };
字典雖然在實(shí)現(xiàn)上可能更高效,但是它不是一個(gè)原生的類(lèi),也缺乏 Map
的一些特殊方法和屬性。因此在 TypeScript 中,如果需要使用到這些特殊的方法和屬性,或者需要確保鍵的順序等問(wèn)題,建議使用 Map
。如果只是簡(jiǎn)單的存儲(chǔ)鍵值對(duì),可以使用對(duì)象或者字典。
總結(jié)
到此這篇關(guān)于TypeScript中Map對(duì)象使用及Map與字典的區(qū)別詳解的文章就介紹到這了,更多相關(guān)TS Map對(duì)象與字典區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序非跳轉(zhuǎn)式組件授權(quán)登錄的方法示例
這篇文章主要介紹了微信小程序非跳轉(zhuǎn)式組件授權(quán)登錄的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05JavaScript通過(guò)代碼調(diào)用Flash顯示的方法
這篇文章主要介紹了JavaScript通過(guò)代碼調(diào)用Flash顯示的方法,實(shí)例分析了JavaScript通過(guò)flash插件swfobject.js調(diào)用flash顯示的具體操作技巧,需要的朋友可以參考下2016-02-02詳解TypeScript如何正確使用Declare關(guān)鍵字
如果您編寫(xiě) TypeScript 代碼的時(shí)間足夠長(zhǎng),您就已經(jīng)看到過(guò)declare關(guān)鍵字,但它有什么作用,為什么要使用它呢,下面小編就來(lái)和大家簡(jiǎn)單講講2023-08-08