Map是ES6(ECMAScript 2015)新增的資料結構之一,同樣都是 { } ,所以應該要了解什麼情況會從Object轉而使用Map。
Object | Map | |
---|---|---|
Key的型別 | 字串、Symbol | 任何型別 |
鍵值對的順序 | X | O |
使用方法 | . 、 [ ] | set( ) 、 get( ) 、 has( )等 |
迭代方法(iteration) | Object.keys | for...of 、 forEach |
使用情境:
*Object:
- 當你需要直接訪問屬性時,Object 提供了更方便的語法。你可以使用 . 或 [ ] 來訪問屬性。
- 當你的鍵是字符串或符號時。
- 當你需要一個簡單的鍵值對集合時。例如,當你有一個固定的一組鍵和對應的值時。
*Map:
- 當你需要動態地添加和刪除鍵值對時。
- 當你需要按插入順序進行操作時,因為它保持了插入順序。
- 當你的Key不僅限於字符串和符號時,因為它可以接受任意類型的鍵。