ES6學習筆記(六)--set,map資料結構和for...of遍歷
阿新 • • 發佈:2019-02-11
Set
新的資料解構,成員值是唯一的
//不能新增相同的值
var s = new Set();
[2, 3, 5, 4, 5, 2, 2].map(x => s.add(x));
for (let i of s) {
console.log(i);
}
// 2 3 5 4
//去除相同的值
var set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]
Set例項的屬性和方法
例項的屬性
Set.prototype.constructor
:建構函式,預設就是Set
函式Set.prototype.size
:返回Set
例項的方法:
操作方法
add(value)
:新增某個值,返回Set結構本身。delete(value)
:刪除某個值,返回一個布林值,表示刪除是否成功。has(value)
:返回一個布林值,表示該值是否為Set的成員。clear()
:清除所有成員,沒有返回值
遍歷方法
keys()
:返回一個鍵名的遍歷器values()
:返回一個鍵值的遍歷器entries()
:返回一個鍵值對的遍歷器forEach()
:使用回撥函式遍歷每個成員
Map
JavaScript的物件(Object),本質上是鍵值對的集合(Hash結構),但是隻能用字串當作鍵
var m = new Map();
var o = {p: "Hello World"};
m.set(o, "content")
m.get(o) // "content"
m.has(o) // true
m.delete(o) // true
m.has(o) // false
例項的屬性
size
屬性返回Map結構的成員總數
例項的方法
操作方式
set(key, value)
:設定key所對應的鍵值,然後返回整個Map結構(本身)get(key)
:讀取key對應的鍵值has(key)
:返回一個布林值,表示某個鍵是否在Map資料結構中delete(key)
:刪除某個鍵,返回布林值clear()
:清除所有成員,沒有返回值
遍歷方法
keys()
:返回鍵名的遍歷器values()
:返回鍵值的遍歷器entries()
:返回所有成員的遍歷器forEach()
:遍歷Map的所有成員
for…of遍歷
適用範圍:陣列、Set和Map結構、某些類似陣列的物件(比如arguments物件、DOM NodeList物件)、Generator物件,以及字串
與其他遍歷語法比較
- for迴圈:寫法麻煩
- forEach迴圈:無法中途跳出
- for…in
- 陣列的鍵名是數字,但是for…in迴圈是以字串作為鍵名“0”、“1”、“2”
- for…in迴圈不僅遍歷數字鍵名,還會遍歷手動新增的其他鍵,甚至包括原型鏈上的鍵
- 某些情況下,for…in迴圈會以任意順序遍歷鍵名