JS中的new Map()方法介紹
在 JavaScript 中,Map 是一種新的數(shù)據(jù)結(jié)構(gòu),它與傳統(tǒng)的對(duì)象({})非常相似,用于存儲(chǔ)鍵值對(duì)(key-value pairs)。但是,Map 提供了更多的優(yōu)勢(shì)和功能,尤其是在鍵的處理上。本文將詳細(xì)介紹 new Map() 方法,如何使用它以及它相對(duì)于傳統(tǒng)對(duì)象的優(yōu)勢(shì)。
1. 什么是 Map?
Map 是 ES6 中新增的一個(gè)數(shù)據(jù)結(jié)構(gòu),它類似于對(duì)象,但它的鍵(key)可以是任何類型的值,而不僅限于字符串或符號(hào)。此外,Map 保持了鍵值對(duì)的插入順序,可以進(jìn)行遍歷操作。我們可以通過(guò) new Map() 來(lái)創(chuàng)建一個(gè)空的 Map 實(shí)例。
2. 創(chuàng)建一個(gè) Map
2.1 使用 new Map() 創(chuàng)建空的 Map
const map = new Map();
console.log(map); // Map(0) {}通過(guò) new Map() 創(chuàng)建的是一個(gè)空的 Map,此時(shí) map 中沒(méi)有任何鍵值對(duì)。
2.2 使用二維數(shù)組初始化 Map
你可以通過(guò)傳遞一個(gè)二維數(shù)組來(lái)初始化 Map。數(shù)組的每個(gè)元素是一個(gè)包含兩個(gè)值的子數(shù)組,分別表示鍵和值。
const map = new Map([
['name', 'John'],
['age', 30],
['city', 'New York']
]);
console.log(map); // Map(3) { 'name' => 'John', 'age' => 30, 'city' => 'New York' }2.3 使用其他 Map 實(shí)例初始化
可以通過(guò)將一個(gè)已經(jīng)存在的 Map 實(shí)例作為參數(shù)來(lái)初始化另一個(gè) Map:
const originalMap = new Map([
['name', 'Alice'],
['age', 25]
]);
const copiedMap = new Map(originalMap);
console.log(copiedMap); // Map(2) { 'name' => 'Alice', 'age' => 25 }3. Map 的常用方法
3.1 set(key, value)
set 方法用于向 Map 中添加或更新鍵值對(duì)。如果 Map 中已經(jīng)存在相同的鍵,那么它會(huì)更新該鍵對(duì)應(yīng)的值。
const map = new Map();
map.set('name', 'John');
map.set('age', 30);
console.log(map); // Map(2) { 'name' => 'John', 'age' => 30 }
map.set('name', 'Alice');
console.log(map); // Map(2) { 'name' => 'Alice', 'age' => 30 }3.2 get(key)
get 方法用于根據(jù)給定的鍵獲取對(duì)應(yīng)的值。如果該鍵不存在,返回 undefined。
const map = new Map();
map.set('name', 'John');
map.set('age', 30);
console.log(map.get('name')); // John
console.log(map.get('address')); // undefined3.3 has(key)
has 方法檢查 Map 中是否包含給定的鍵,返回布爾值。
const map = new Map();
map.set('name', 'John');
console.log(map.has('name')); // true
console.log(map.has('age')); // false3.4 delete(key)
delete 方法用于刪除 Map 中指定鍵的鍵值對(duì),返回一個(gè)布爾值,表示刪除操作是否成功。
const map = new Map();
map.set('name', 'John');
map.set('age', 30);
console.log(map.delete('name')); // true
console.log(map.delete('address')); // false
console.log(map); // Map(1) { 'age' => 30 }3.5 clear()
clear 方法清空 Map 中所有的鍵值對(duì)。
const map = new Map();
map.set('name', 'John');
map.set('age', 30);
map.clear();
console.log(map); // Map(0) {}3.6 size
size 屬性返回 Map 中鍵值對(duì)的數(shù)量。
const map = new Map();
map.set('name', 'John');
map.set('age', 30);
console.log(map.size); // 24. Map 的迭代方法
與傳統(tǒng)的對(duì)象不同,Map 可以很方便地進(jìn)行迭代。你可以通過(guò)多種方式遍歷 Map,包括:
4.1 forEach 方法
forEach 方法用于遍歷 Map 中的每個(gè)鍵值對(duì),并對(duì)每一對(duì)進(jìn)行處理。
const map = new Map([
['name', 'John'],
['age', 30]
]);
map.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
// 輸出:
// name: John
// age: 304.2 使用 for...of 迭代器
Map 支持 for...of 循環(huán),它會(huì)返回每個(gè)鍵值對(duì)。你可以使用解構(gòu)語(yǔ)法來(lái)直接訪問(wèn)鍵和值。
const map = new Map([
['name', 'John'],
['age', 30]
]);
for (const [key, value] of map) {
console.log(`${key}: ${value}`);
}
// 輸出:
// name: John
// age: 304.3 keys(), values(), 和 entries()
Map 提供了三個(gè)方法來(lái)分別獲取所有的鍵、值和鍵值對(duì)。
keys()返回一個(gè)包含所有鍵的迭代器。values()返回一個(gè)包含所有值的迭代器。entries()返回一個(gè)包含所有鍵值對(duì)的迭代器。
const map = new Map([ ['name', 'John'], ['age', 30] ]); console.log([...map.keys()]); // ['name', 'age'] console.log([...map.values()]); // ['John', 30] console.log([...map.entries()]); // [['name', 'John'], ['age', 30]]
5. Map 相對(duì)于傳統(tǒng)對(duì)象的優(yōu)勢(shì)
- 鍵的類型:在傳統(tǒng)的 JavaScript 對(duì)象中,鍵(key)必須是字符串或者符號(hào),而
Map允許任何數(shù)據(jù)類型作為鍵(例如:對(duì)象、數(shù)組、函數(shù)等)。 - 保持插入順序:
Map中的鍵值對(duì)是按插入順序進(jìn)行迭代的,而對(duì)象則沒(méi)有這一保證。 - 性能:對(duì)于頻繁的添加和刪除操作,
Map通常比對(duì)象更高效,尤其是在大量數(shù)據(jù)的場(chǎng)景下。
6. 總結(jié)
Map 是 JavaScript 中非常強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它提供了比傳統(tǒng)對(duì)象更多的靈活性和功能。在你需要頻繁操作鍵值對(duì)的場(chǎng)景中,使用 Map 是一個(gè)更好的選擇,特別是在鍵可能不是字符串的情況下。通過(guò)本文的講解,相信你已經(jīng)能夠熟練地使用 Map 來(lái)處理各種需求。
到此這篇關(guān)于JS中的new Map()方法介紹的文章就介紹到這了,更多相關(guān)js new map方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
手把手教你 CKEDITOR 4 實(shí)現(xiàn)Dialog 內(nèi)嵌 IFrame操作詳解
這篇文章主要介紹了手把手教你 CKEDITOR 4 實(shí)現(xiàn)Dialog 內(nèi)嵌 IFrame操作,結(jié)合實(shí)例形式分析了CKEDitor4 Dialog內(nèi)嵌IFrame具體操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-06-06
echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽
項(xiàng)目中有遇到需要使用餅圖展示每種狀態(tài)所占比例,去echarts官網(wǎng)學(xué)習(xí)了一番,下面這篇文章主要給大家介紹了關(guān)于echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽的相關(guān)資料,需要的朋友可以參考下2022-12-12
JS常見(jiàn)創(chuàng)建類的方法小結(jié)【工廠方式,構(gòu)造器方式,原型方式,聯(lián)合方式等】
這篇文章主要介紹了JS常見(jiàn)創(chuàng)建類的方法,結(jié)合實(shí)例形式總結(jié)分析了工廠方式,構(gòu)造器方式,原型方式,聯(lián)合方式等常見(jiàn)的javascript創(chuàng)建類的常用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04
echarts拖拽滑塊dataZoom-slider自定義樣式簡(jiǎn)單適配移動(dòng)端
在電腦端和移動(dòng)端的數(shù)據(jù)展示中,針對(duì)移動(dòng)端的特殊性,進(jìn)行了一系列優(yōu)化措施,這篇文章主要介紹了echarts拖拽滑塊dataZoom-slider自定義樣式簡(jiǎn)單適配移動(dòng)端的相關(guān)資料,需要的朋友可以參考下2024-09-09
javascript 數(shù)據(jù)存儲(chǔ)的常用函數(shù)總結(jié)
這篇文章主要介紹了javascript 數(shù)據(jù)存儲(chǔ)的常用函數(shù)總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-06-06
JS實(shí)現(xiàn)根據(jù)文件字節(jié)數(shù)返回文件大小的方法
這篇文章主要介紹了JS實(shí)現(xiàn)根據(jù)文件字節(jié)數(shù)返回文件大小的方法,涉及javascript數(shù)值計(jì)算與字符串操作相關(guān)技巧,需要的朋友可以參考下2016-08-08
JS實(shí)現(xiàn)根據(jù)URL批量下載文件并壓縮成zip文件
這篇文章主要為大家學(xué)習(xí)介紹了JS如何實(shí)現(xiàn)根據(jù)URL批量下載文件并壓縮成zip文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-08-08

