在js中對象object的本質(zhì)上就是鍵值對的集合哈希結(jié)構(gòu)hash,但是對象只能用字符串來當(dāng)做鍵名,所以就會帶來很大的限制,加入我們用js獲取dom,我就想用當(dāng)前dom當(dāng)做鍵值,是沒有辦法實(shí)現(xiàn)的,強(qiáng)行寫入的話只會把當(dāng)前dom節(jié)點(diǎn)轉(zhuǎn)換為字符串。
所以,如果我們想要一次作為鍵值,那么就不得不在原有的dom結(jié)構(gòu)中增加參數(shù),味了解決類似問題所以es6引入了Map,它也是一個鍵值對的對象,但是它的鍵名就不在受限于字符串,可以用任何類型的值來代表鍵名,對象、數(shù)組、字符等等。運(yùn)用次方法再看上述問題我們就可以輕松解決。
但是需要注意的是,如果用兩個相同內(nèi)容的數(shù)據(jù),但是其存儲地址不同的話,Map是沒有辦法獲取到鍵值的。比如:
如上圖所示,m和n的內(nèi)容是完全相同的,在get時再重新寫入一個新對象,mn的內(nèi)容都無法獲取到,但是單獨(dú)獲取n的可以,這也就說明,Map的鍵名存儲的內(nèi)容實(shí)際是存儲地址。
Map的常用屬性和方法:
size:返回成員數(shù)量
set:追加key 并返回當(dāng)前map 所以set可以鏈?zhǔn)讲僮鞅热?/span>
get::獲取key的值
has:判斷key是否存在
delete:刪除指定key
clear:刪除所有內(nèi)容
keys:返回所有key
values:返回所有內(nèi)容
entries:將鍵值對轉(zhuǎn)數(shù)組返回[[鍵,值]...]
forEach:循環(huán)遍歷
關(guān)鍵詞: