[Medium] Set & Map
1. What are Set and Map?
什麼是 Set 和 Map?
Set 和 Map 是 ES6 引入的兩種新的資料結構,它們提供了比傳統物件和陣列更適合特定場景的解決方案。
Set(集合)
定義:Set 是一種值唯一的集合,類似於數學中的集合概念。
特點:
- 儲存的值不會重複
- 使用
===來判斷值是否相等 - 保持插入順序
- 可以儲存任何類型的值(原始型別或物件)
基本用法:
// 建立 Set
const set = new Set();
// 新增值
set.add(1);
set.add(2);
set.add(2); // 重複值不會被加入
set.add('hello');
set.add({ name: 'John' });
console.log(set.size); // 4
console.log(set); // Set(4) { 1, 2, 'hello', { name: 'John' } }
// 檢查值是否存在
console.log(set.has(1)); // true
console.log(set.has(3)); // false
// 刪除值
set.delete(2);
console.log(set.has(2)); // false
// 清空 Set
set.clear();
console.log(set.size); // 0
從陣列建立 Set:
// 去除陣列中的重複值
const arr = [1, 2, 2, 3, 3, 3];
const uniqueSet = new Set(arr);
console.log(uniqueSet); // Set(3) { 1, 2, 3 }
// 轉回陣列
const uniqueArr = [...uniqueSet];
console.log(uniqueArr); // [1, 2, 3]
// 簡寫
const uniqueArr2 = [...new Set(arr)];