Skip to content

容器型別


1. 基本容器型別

這些是最常用來儲存資料的容器型別:

陣列(Array)

  • 用途:存放有順序的資料集合。
  • 特性
  • 使用索引(index)來存取元素。
  • 可包含不同類型的資料。
  • 提供許多操作方法(如 push, pop, map 等)。
const fruits = ["apple", "banana", "cherry"];
console.log(fruits[0]); // apple

物件(Object)

  • 用途:用鍵值對(key-value pair)來儲存資料。
  • 特性
  • 鍵必須是字串(或可轉成字串),值可以是任何型別。
  • 用於結構化和描述性資料。
const person = { name: "John", age: 25 };
console.log(person.name); // John

2. 進階容器型別

這些型別針對更特定的用途設計:

Map

  • 用途:存放鍵值對,鍵可以是任何型別
  • 特性
  • 保留插入順序。
  • 提供更高效的鍵查詢。
const map = new Map();
map.set("name", "Alice");
map.set(42, "Answer");
console.log(map.get(42)); // Answer

Set

  • 用途:存放唯一的值(沒有重複項目)。
  • 特性
  • 不保證元素的順序。
  • 提供快速檢查元素是否存在的方法。
const set = new Set([1, 2, 2, 3]);
console.log(set.size); // 3

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 物件

學習順序建議

  1. 先學基本容器型別:陣列和物件,因為它們是所有程式中最常用的。
  2. 再學進階容器型別:Map 和 Set,適合更複雜的資料操作。
  3. 最後學特殊容器型別:WeakMap 和 WeakSet,當需要處理物件的弱引用時才會用到。