1. 程式人生 > >ES6學習筆記(六)--set,map資料結構和for...of遍歷

ES6學習筆記(六)--set,map資料結構和for...of遍歷

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
    例項的成員總數

例項的方法:

  1. 操作方法

    • add(value):新增某個值,返回Set結構本身。
    • delete(value):刪除某個值,返回一個布林值,表示刪除是否成功。
    • has(value):返回一個布林值,表示該值是否為Set的成員。
    • clear():清除所有成員,沒有返回值
  2. 遍歷方法

    • 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結構的成員總數

例項的方法

  1. 操作方式

    • set(key, value):設定key所對應的鍵值,然後返回整個Map結構(本身)
    • get(key):讀取key對應的鍵值
    • has(key):返回一個布林值,表示某個鍵是否在Map資料結構中
    • delete(key):刪除某個鍵,返回布林值
    • clear():清除所有成員,沒有返回值
  2. 遍歷方法

    • keys():返回鍵名的遍歷器
    • values():返回鍵值的遍歷器
    • entries():返回所有成員的遍歷器
    • forEach():遍歷Map的所有成員

for…of遍歷

適用範圍:陣列、Set和Map結構、某些類似陣列的物件(比如arguments物件、DOM NodeList物件)、Generator物件,以及字串

與其他遍歷語法比較

  • for迴圈:寫法麻煩
  • forEach迴圈:無法中途跳出
  • for…in
    1. 陣列的鍵名是數字,但是for…in迴圈是以字串作為鍵名“0”、“1”、“2”
    2. for…in迴圈不僅遍歷數字鍵名,還會遍歷手動新增的其他鍵,甚至包括原型鏈上的鍵
    3. 某些情況下,for…in迴圈會以任意順序遍歷鍵名