前言數組
早讀匯截止到目前已經舉辦三期了,你參與過了嗎?今天分享的筆記來自早讀匯第二期的廣州@mogeWCY童鞋關於《實戰ES2015》的其中一章的筆記。數據結構
正文從這開始~ide
你們都知道js的數據類型分爲了基本類型和引用類型函數
基本類型:number,string,boolean,null,undefinedspa
引用類型:object(Array,Function,Date,Regexp,Error)設計
可是實際上咱們可能在和其餘工種的語言合做的時候會發現,他們嘴裏會說出字典,列表,集合等一些數據類型。每中語言有不一樣的數據類型,如今ES6也緊跟上來了對象
ES6中下新增的數據結構blog
Set索引
Set是一個無序不重複元素的集合(想一想高中數學學的集合的概念)對象。他是無序的數組,且該數組中沒有重複項。 因此正因爲他的這兩個特性,我想到了這些:圖片
能夠利用這個特性作數組去重
由於是無序的因此不能經過索引來取集合中的元素 Ps:那要怎樣取值呢,往下看
在建立集合對象時咱們得使用new關鍵字來建立,一樣能夠把一個數組做爲參數傳進集合對象
下面咱們來看一下Set的 API
set.add(value):爲集合添加元素
set.clear():清空集合對象
set.delete(value):刪除集合對象值爲value的元素
set.forEach(callbackFn[,context]):和數組的使用方法同樣
set.has(value):檢查集合內是否有值爲value的元素,並返回布爾值,很明顯這個方法比數組對象的**indexOf**方法直觀多了
set.values():返回一個新的迭代器對象,該對象包含Set對象中的按插入順序排列的全部元素的值
set.keys():與values()方法相同,返回一個新的迭代器對象,該對象包含Set對象中的按插入順序排列的全部元素的值。
set.size():返回返回Set對象的值的個數
注:使用下面的方法能夠快速的實現數組去重
WeakSet
WeakSet 是升級版的Set對象,是爲了合理運用內存來設計的 與Set對象的差異大概以下:
WeakSet 不能包含值類型元素,不然會拋出一個TypeError
WeakSet 不能包含無引用的對象,不然會自動清除出集合
WeakSet 沒法被探知其大小,也沒法被探知其中所包含的元素 > Weak版本的數據類型是沒法包含無引用的元素的,一旦數據結構內的任意元素的引用被所有解除 該元素便會被移除出當前所在的數據結構
Map
Map對象是簡單的鍵/值映射
在建立映射對象時,能夠直接用new關鍵字建立,或者能夠將一個二元數組(鍵值對)傳入到構建函數中, 其中每個鍵值對都會加入到該映射對象中。該數組內的元素會以數組順序進行處理,若是存在相同的鍵,則會 按照先進先出的原則,以該鍵最後一個處理的對應的值爲最終值。
下面咱們來看下map的方法
map.set(key,value):添加鍵值對到映射中
map.get(key):獲取映射中某一個鍵的對應值
map.delete(key):將某一鍵值對移出映射
map.clear():清空映射中的全部鍵值對
map.entries():返回一個以二元數組(鍵值對)做爲元素的數組
map.has(key):檢查映射中是否包含某一鍵值對
map.keys():返回一個以當前映射中全部鍵做爲元素的可迭代對象
map.values():返回一個以當前映射中全部值做爲元素的可迭代對象
map.size():映射中鍵值對的數量
映射對象與Object的區別
map對象能夠以任意對象做爲鍵,也能夠很方便地獲取鍵值對的數量。然而這些對於普通的Object對象是不能夠的,注意。Object對象是沒有length屬性的
最後,廣州@mogeWCY童鞋是第二期參與早讀匯的,當時書是沒有漂流到他這邊的,但他用本身買的書來參與活動的,也是目前惟一一個。