ES6 的 Map 與 Set

ECMAScript 6 多了兩個新的資料結構,分別是 Map 與 Set,剛開始看到時還因為太久沒接觸其他語言,整個想不起來是什麼東西,不過還是簡單介紹一下。

Set 我一開始想不起來到底和 Map 哪裡不一樣,後來還是看了說明才回憶起來,其實就是一組值,像是資料庫裡面的 enum 資料型態,也可以想像成是陣列那樣的結構,可是它沒辦法直接用索引取特定元素的值,只能用列舉的方法取值,常用的 method 有三個,adddeleteclear,預設是會幫你確保值都是唯一的,重複的值會被忽略,要列舉裡面的值基本上是要用 for...of 語法,這和以前的for...in語法不一樣,是直接取值出來的,也是 ES6 新的東西。

Map 則是和原來的 JS 物件好像重複到,都是 key value mapping 的資料結構,不過其實還是有個很重要的差異點,就是 Map 的 key 的可以用字串以外的值,例如你可以用 DOM Node 來當 Map 裡面的 key,用法基本上就是setget,可以避免一些以前會遇到的問題,例如 jQuery 的 data,以前會需要幫每個 DOM Node 生 unique id,如果用 Map 來實做的話就不需要了。

目前 Firefox 和 Chrome 都已經有把這兩個資料結構實做好了,不過 Chrome 還沒有把for...of實做好就是~