JavaScript中的map類是一種存儲鍵值對的數據結構,它允許使用任何值(包括對象)作為鍵或值。map類中的每個元素都由一個唯一的鍵與一個值對應。與數組不同,map類不是有序的,因此不能通過索引進行訪問。它提供了快速的查找鍵值對的方法,并支持快速添加和刪除元素。
下面是一個簡單的例子,展示了如何創建并使用一個map實例:
const map = new Map(); map.set('key1', 'value1'); map.set('key2', 'value2'); console.log(map.get('key1')); // 輸出value1 console.log(map.has('key2')); // 輸出true map.delete('key2'); console.log(map.has('key2')); // 輸出false console.log(map.size); // 輸出1
map類也可以使用對象作為鍵:
const map = new Map(); const obj1 = {name: 'Alice'}; const obj2 = {name: 'Bob'}; map.set(obj1, 1); map.set(obj2, 2); console.log(map.get(obj1)); // 輸出1 console.log(map.has(obj2)); // 輸出true
如果您需要使用對象作為鍵,并且希望在兩個對象具有相同屬性時區分它們,則可能需要使用WeakMap而不是Map:
const weakMap = new WeakMap(); const obj1 = {name: 'Alice'}; const obj2 = {name: 'Alice'}; weakMap.set(obj1, 1); console.log(weakMap.get(obj1)); // 輸出1 console.log(weakMap.has(obj2)); // 輸出false
map類還具有許多有用的方法,包括forEach、keys、values、entries和clear。forEach()方法允許您迭代map中的所有鍵值對,并對它們執行某些操作:
const map = new Map();
map.set('key1', 'value1');
map.set('key2', 'value2');
map.forEach((value, key) => {
console.log(${key} = ${value}
);
});
// 輸出:
// key1 = value1
// key2 = value2
keys()方法允許您迭代map中的所有鍵:
const map = new Map(); map.set('key1', 'value1'); map.set('key2', 'value2'); for (const key of map.keys()) { console.log(key); } // 輸出: // key1 // key2
values()方法允許您迭代map中的所有值:
const map = new Map(); map.set('key1', 'value1'); map.set('key2', 'value2'); for (const value of map.values()) { console.log(value); } // 輸出: // value1 // value2
entries()方法允許您迭代map中的所有鍵值對:
const map = new Map();
map.set('key1', 'value1');
map.set('key2', 'value2');
for (const [key, value] of map.entries()) {
console.log(${key} = ${value}
);
}
// 輸出:
// key1 = value1
// key2 = value2
最后,clear()方法可以在map中刪除所有鍵值對:
const map = new Map(); map.set('key1', 'value1'); map.set('key2', 'value2'); console.log(map.size); // 輸出2 map.clear(); console.log(map.size); // 輸出0
這些都是map類的基本操作。它是一種非常有用的數據結構,可以幫助您更輕松地處理復雜的應用程序。