ES6中的Map

一、Map的基本概念

在ES6之前,JavaScript中常用的鍵值對數據結構是Object。Object只能用字符串作為鍵名,這限制了它的使用場景。Map是ES6中引入的一種新的數據結構,它可以用任意值作為鍵名。下面是一個簡單的Map的例子:

let map = new Map();
map.set('key1', 'value1');
map.set('key2', 'value2');
console.log(map.get('key1')); //'value1'
console.log(map.size); //2

Map的基本操作包括:set()方法設置鍵值對、get()方法獲取鍵對應的值、size屬性獲取Map中鍵值對的個數。Map可以包含任意類型的鍵和值,甚至包括NaN和undefined。

二、Map的遍歷方法

Map提供了四種遍歷方法:keys()、values()、entries()和forEach()。

1. keys()方法

keys()方法返回一個Iterator對象,它包含Map中所有鍵的列表。在遍歷鍵之前,需要先用for-of循環或者next()方法將Iterator對象轉換成數組或者遍歷器對象。下面是一個keys()方法的例子:

let map = new Map();
map.set('A', 'a');
map.set('B', 'b');
let keys = map.keys();
for(let key of keys){
    console.log(key); //A B
}

2. values()方法

values()方法返回一個Iterator對象,它包含Map中所有值的列表。在遍歷值之前,需要先用for-of循環或者next()方法將Iterator對象轉換成數組或者遍歷器對象。下面是一個values()方法的例子:

let map = new Map();
map.set('A', 'a');
map.set('B', 'b');
let values = map.values();
for(let value of values){
    console.log(value); //a b
}

3. entries()方法

entries()方法返回一個Iterator對象,它包含Map中所有鍵值對的列表。在遍歷鍵和值之前,需要先用for-of循環或者next()方法將Iterator對象轉換成數組或者遍歷器對象。下面是一個entries()方法的例子:

let map = new Map();
map.set('A', 'a');
map.set('B', 'b');
let entries = map.entries();
for(let [key, value] of entries){
    console.log(key+':'+value); //A:a B:b
}

4. forEach()方法

forEach()方法可以遍歷Map中的每一個鍵值對,並對其進行操作。forEach()方法接受一個函數作為參數,這個函數可以接受三個參數:鍵值、鍵名和Map本身。下面是一個forEach()方法的例子:

let map = new Map();
map.set('A', 'a');
map.set('B', 'b');
map.forEach(function(value, key, map){
    console.log(key+':'+value); //A:a B:b
});

三、Map的其他用法

1. Map的初始化

Map可以通過傳入數組或者其他Map對象來進行初始化。通過傳入數組,可以用數組中的分離出的鍵值對來初始化Map對象。下面是一個初始化Map對象的例子:

let arr = [['key1', 'value1'], ['key2', 'value2']];
let map1 = new Map(arr);
let map2 = new Map(map1);
console.log(map1.get('key1'));//value1
console.log(map2.get('key1'));//value1

2. WeakMap與Map的區別

WeakMap與Map的區別在於,WeakMap只能用對象作為鍵名,而且鍵名只能是弱引用。弱引用的意思是,當鍵值對中的鍵沒有其它引用時,會被自動垃圾回收機制回收。所以,WeakMap中的鍵值對不會造成內存泄漏。下面是一個WeakMap的例子:

let wm = new WeakMap();
let object = {};
wm.set(object, 'value');
console.log(wm.get(object));//value
object = null;
//鍵已經沒有引用了,所以它被垃圾回收了

四、總結

ES6中的Map是一種非常有用的數據結構,它可以用任意類型的鍵名和值來存儲數據。Map還提供了多種遍歷方法,方便我們對Map中的數據進行操作。另外,如果需要對鍵名具有強引用的Map,可以使用普通的Map,如果需要對鍵名具有弱引用的Map,可以使用WeakMap。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240569.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:22
下一篇 2024-12-12 12:22

相關推薦

  • 深入解析map遍歷刪除

    一、概述 map是C++ STL中用於映射鍵值對的容器,具有一些方便的操作,如insert、find、count等。然而,如果需要根據某些條件刪除元素,就需要遍歷整個map,找到需…

    編程 2025-04-25
  • Java Map containsKey方法詳解

    一、containsKey方法簡介 containsKey方法是Java Map接口中的方法之一,用於判斷Map集合中是否包含某個指定的key,方法返回一個boolean類型值。如…

    編程 2025-04-24
  • JS Map刪除元素詳解

    一、JS刪除DOM元素 在前端開發中,動態地刪除DOM元素是一項常見操作。通過JavaScript,我們可以輕鬆地以編程方式刪除HTML頁面上的元素,從而實現頁面的動態更新。下面是…

    編程 2025-04-24
  • mapreduce.map.java.opts

    一、基本概念 mapreduce.map.java.opts是Hadoop中MapReduce框架中的一個重要的參數,它用於控制map任務中Java虛擬機(JVM)的參數。通常情況…

    編程 2025-04-24
  • 深入理解map轉換為json字符串

    一、map轉換為json字符串 Map是一種鍵值對的數據結構,可以存儲任意類型的對象。在Java中,我們可以將一個Map對象轉換成一個JSON字符串,這個JSON字符串可以用於數據…

    編程 2025-04-23
  • 深入解析Map和FlatMap

    一、Map和FlatMap的基本概念 Map和FlatMap是函數式編程裡面非常重要的兩個概念,它們可以處理一些複雜的數據結構。Map是指對一個數組或者列表的每個元素都執行一定的操…

    編程 2025-04-23
  • 詳解map轉對象

    一、基礎概念 Map是一種鍵值對的數據結構,它是Java中非常常用的數據類型,尤其是在開發中常用於將JSON字符串轉化為對象。Object則是Java中的一個基礎數據類型,它是所有…

    編程 2025-04-23
  • c++ map排序詳解

    一、基本介紹 map是c++語言中的一個關聯數組容器,可以在一個鍵和值之間建立一種映射關係。其中,鍵是唯一的,值可以重複。同時,map中的元素是按鍵自動排序的,排序方式可以通過自定…

    編程 2025-04-23
  • lambda遍歷map詳解

    一、基礎概念 1、lambda表達式的含義 lambda:arguemts:expression 其中,arguments表示lambda表達式的參數列表,expression則表…

    編程 2025-04-22
  • Java Map Remove詳解

    一、Map.remove() Map.remove(Object key)方法用於根據key刪除Map中的entry。如果Map中不存在這個key,則不進行任何操作。remove(…

    編程 2025-04-18

發表回復

登錄後才能評論