ES6中增長了Map和Set兩種新的數據結構,Map是相似Object的一種鍵值對集合,區別在於Map的鍵不只限因而字符串,其餘各類類型的值包括對象均可以成爲Map的鍵;Set是相似數組的一種數據結構,不一樣點在於Set中沒有重複的值。數組
1 Map數據結構
建立Map對象ide
var map = new Map();
Map和Object有點相似,都是鍵值對來存儲數據,和Object不一樣的是,JavaScript支持的全部類型均可以看成Map的key函數
var map = new Map(); map.set({}, "對象") map.set([], "數組") map.set("字符串", "字符串") map.set(1, 1) map.set(null, null) map.set(undefined, undefined) console.log(map)
方法this
Map.prototype.clear()
移除Map對象的全部鍵/值對 。prototype
Map.prototype.delete(key)
若是 Map 對象中存在該元素,則移除它並返回 true;不然若是該元素不存在則返回 false。隨後調用 Map.prototype.has(key) 將返回 false 。code
Map.prototype.entries()
返回一個新的 Iterator 對象,它按插入順序包含了Map對象中每一個元素的 [key, value] 數組。對象
Map.prototype.forEach(callbackFn[, thisArg])
按插入順序,爲 Map對象裏的每一鍵值對調用一次callbackFn函數。若是爲forEach提供了thisArg,它將在每次回調中做爲this值。ip
Map.prototype.get(key)
返回鍵對應的值,若是不存在,則返回undefined。字符串
Map.prototype.has(key)
返回一個布爾值,表示Map實例是否包含鍵對應的值。
Map.prototype.keys()
返回一個新的 Iterator對象, 它按插入順序包含了Map對象中每一個元素的鍵 。
Map.prototype.set(key, value)
設置Map對象中鍵的值。返回該Map對象。
Map.prototype.values()
返回一個新的Iterator對象,它按插入順序包含了Map對象中每一個元素的值 。
Map.prototype[@@iterator]()
返回一個新的Iterator對象,它按插入順序包含了Map對象中每一個元素的 [key, value] 數組。
2 Set
Set和Map相似,也是一組key的集合,但不存儲value。因爲key不能重複,因此,在Set中,沒有重複的key。
var set = new Set();
重複的元素會自動過濾
var set = new Set([1, 2, 3, 3, '3']); set // Set {1, 2, 3, "3"}
方法
Set.prototype.add(value)
在Set對象尾部添加一個元素。返回該Set對象。
Set.prototype.clear()
移除Set對象內的全部元素。
Set.prototype.delete(value)
移除Set中與這個值相等的元素,返回Set.prototype.has(value)在這個操做前會返回的值(即若是該元素存在,返回true,不然返回false)。Set.prototype.has(value)在此後會返回false。
Set.prototype.entries()
返回一個新的迭代器對象,該對象包含Set對象中的按插入順序排列的全部元素的值的[value, value]數組。爲了使這個方法和Map對象保持類似, 每一個值的鍵和值相等。
Set.prototype.forEach(callbackFn[, thisArg])
按照插入順序,爲Set對象中的每個值調用一次callBackFn。若是提供了thisArg參數,回調中的this會是這個參數。
Set.prototype.has(value)
返回一個布爾值,表示該值在Set中存在與否。
Set.prototype.keys()
與values()方法相同,返回一個新的迭代器對象,該對象包含Set對象中的按插入順序排列的全部元素的值。
Set.prototype.values()
返回一個新的迭代器對象,該對象包含Set對象中的按插入順序排列的全部元素的值。
Set.prototype[@@iterator]()
返回一個新的迭代器對象,該對象包含Set對象中的按插入順序排列的全部元素的值。
小結
Map和Set是ES6標準新增的數據類型,
Set和Map主要的應用場景在於數組去重和數據存儲,
Set是一種叫作集合的數據結構,Map是一種叫作字典的數據結構