講一講ES6新增的兩種數據結構Map和Set

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是一種叫作字典的數據結構

相關文章
相關標籤/搜索