一、Set:值唯一性的保證
Set 對(duì)象類似于數(shù)組,但它只存儲(chǔ)唯一的值。這意味著,即使你多次添加相同的值,Set 中也只會(huì)保留一個(gè)。這使得 Set 非常適合用于去重、判斷元素是否存在等場(chǎng)景。
核心方法:
-
add(value): 向 Set 中添加一個(gè)新值。 -
delete(value): 從 Set 中刪除一個(gè)值。 -
has(value): 判斷 Set 中是否包含某個(gè)值。 -
clear(): 清空 Set 中的所有值。 -
size: 返回 Set 中元素的數(shù)量。
示例:
const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(2); // 重復(fù)添加,只會(huì)保留一個(gè) 2
mySet.add('hello');
console.log(mySet); // Set(3) { 1, 2, 'hello' }
console.log(mySet.has(2)); // true
console.log(mySet.size); // 3
mySet.delete(2);
console.log(mySet); // Set(2) { 1, 'hello' }
應(yīng)用場(chǎng)景:
- 數(shù)據(jù)去重:快速去除數(shù)組中的重復(fù)元素。
- 元素存在性判斷:高效地檢查元素是否在一個(gè)集合中。
- 唯一標(biāo)識(shí)符生成:生成一組唯一的標(biāo)識(shí)符。
二、Map:鍵值對(duì)的完美伴侶
Map 對(duì)象存儲(chǔ)鍵值對(duì),類似于對(duì)象,但它允許使用任意數(shù)據(jù)類型作為鍵,而不僅僅是字符串。這使得 Map 比對(duì)象更加靈活和強(qiáng)大。 Map 中的鍵值對(duì)按照插入順序排列,方便迭代遍歷。
核心方法:
-
set(key, value): 向 Map 中添加一個(gè)鍵值對(duì)。 -
get(key): 獲取與指定鍵關(guān)聯(lián)的值。 -
delete(key): 刪除指定鍵的鍵值對(duì)。 -
has(key): 判斷 Map 中是否包含指定鍵。 -
clear(): 清空 Map 中的所有鍵值對(duì)。 -
size: 返回 Map 中鍵值對(duì)的數(shù)量。 -
entries(),keys(),values(): 分別返回鍵值對(duì)、鍵和值的迭代器。
示例:
const myMap = new Map();
myMap.set('name', 'John');
myMap.set(1, 'one');
myMap.set({a:1}, 'object');
console.log(myMap); // Map(3) { 'name' => 'John', 1 => 'one', { a: 1 } => 'object' }
console.log(myMap.get('name')); // John
console.log(myMap.has(1)); // true
console.log(myMap.size); // 3
應(yīng)用場(chǎng)景:
- 緩存:存儲(chǔ)數(shù)據(jù),提高程序性能。
- 數(shù)據(jù)關(guān)聯(lián):建立不同數(shù)據(jù)之間的映射關(guān)系。
- 對(duì)象存儲(chǔ):存儲(chǔ)復(fù)雜對(duì)象,避免對(duì)象鍵名沖突。