容器型別
1. 基本容器型別
這些是最常用來儲存資料的容器型別:
陣列(Array)
- 用途:存放有順序的資料集合。
- 特性:
- 使用索引(index)來存取元素。
- 可包含不同類型的資料。
- 提供許多操作方法(如
push,pop,map等)。
物件(Object)
- 用途:用鍵值對(key-value pair)來儲存資料。
- 特性:
- 鍵必須是字串(或可轉成字串),值可以是任何型別。
- 用於結構化和描述性資料。
2. 進階容器型別
這些型別針對更特定的用途設計:
Map
- 用途:存放鍵值對,鍵可以是任何型別。
- 特性:
- 保留插入順序。
- 提供更高效的鍵查詢。
const map = new Map();
map.set("name", "Alice");
map.set(42, "Answer");
console.log(map.get(42)); // Answer
Set
- 用途:存放唯一的值(沒有重複項目)。
- 特性:
- 不保證元素的順序。
- 提供快速檢查元素是否存在的方法。
3. 特殊容器型別
用於處理特定資料需求的型別:
WeakMap
- 用途:像 Map,但只能使用物件作為鍵。
- 特性:
- 不會防止鍵被垃圾回收(鍵是弱引用)。
const weakMap = new WeakMap();
const obj = {};
weakMap.set(obj, "value");
console.log(weakMap.get(obj)); // value
WeakSet
- 用途:像 Set,但只能存放物件。
- 特性:
- 不存放值的順序。
- 對物件的引用是弱的。
const weakSet = new WeakSet();
const obj = {};
weakSet.add(obj);
console.log(weakSet.has(obj)); // true
分類總結
| 類型 | 儲存內容 | 是否有順序 | 是否允許重複 | 鍵的類型 |
|---|---|---|---|---|
| 陣列 | 值 | 是 | 是 | 索引(數字) |
| 物件 | 鍵值對 | 否 | 是 | 字串或 Symbol |
| Map | 鍵值對 | 是 | 是 | 任意型別 |
| Set | 值 | 否 | 否 | N/A |
| WeakMap | 鍵值對 | 否 | 是 | 物件 |
| WeakSet | 值 | 否 | 否 | 物件 |
學習順序建議
- 先學基本容器型別:陣列和物件,因為它們是所有程式中最常用的。
- 再學進階容器型別:Map 和 Set,適合更複雜的資料操作。
- 最後學特殊容器型別:WeakMap 和 WeakSet,當需要處理物件的弱引用時才會用到。