set如何初始化元素 ES6學習之Set的模擬實現

2021-10-12 08:53:51 字數 2682 閱讀 9162

new set([ iterable ])
可以傳遞乙個可迭代物件,它的所有元素將被新增到新的set中。如果不指定此引數或其值為null,則新的set為空。

let s = new set([ 1, 2, 3 ]) // set(3) 

let s2 = new set() // set(0) {}

let s3 = new set(null /* or undefined */) // set(0) {}

屬性操作方法遍歷方法

let s = new set()

s.add(1) // set(1)

.add(2) // set(2)

.add(nan) // set(2)

.add(nan) // set(2)

// 注意這裡因為新增完元素之後返回的是該set物件,所以可以鏈式呼叫

// nan === nan 結果是false,但是set中只會存乙個nan

s.has(1) // true

s.has(nan) // true

s.size // 3

s.delete(1)

s.has(1) // false

s.size // 2

s.clear()

s // set(0) {}

let s2 = new set([ 's', 'e', 't' ])

s2 // setiterator

s2.keys() // setiterator

s2.values() // setiterator

s2.entries() // setiterator

// log

[ ...s2 ] // ["s", "e", "t"]

[ ...s2.keys() ] // ["s", "e", "t"]

[ ...s2.values() ] // ["s", "e", "t"]

[ ...s2.entries() ] // [["s", "s"], ["e", "e"], ["t", "t"]]

s2.foreach(function (value, key, set) )

// s s set(3) window

// e e set(3) window

// t t set(3) window

s2.foreach(function () , )

// //

// for (let value of s2)

// s

// e

// t

for (let value of s2.entries())

// ["s", "s"]

// ["e", "e"]

// ["t", "t"]

class set 

get size () {}

has () {}

add () {}

delete () {}

clear () {}

foreach () {}

keys () {}

values () {}

entries () {}

[ symbol.iterator ] () {}

}

除此之外我們還需要二個輔助方法

1、forof,模擬for of行為, 對迭代器物件進行遍歷操作。

const forof = (iterable, callback, ctx) => 

}

2、iterator迭代器,更多迭代器資訊請看iterator,我們這裡面用迭代器是為了讓我們的set的values()等可進行遍歷。

class iterator 

next ()

}[ symbol.iterator ] ()

}

class set  is not iterable`);

// 迴圈可迭代物件,初始化

forof(iterable, value => this.add(value));}}

get size()

has(val)

add(val)

return this;

}delete(val)

return false;

}clear()

foreach(cb, arg) )

}keys()

values()

entries()

[symbol.iterable]()

}

模擬過程中可能會有相應的錯誤,也不是和原生的實現完全一致。僅當學習之用.

es6的 set 學習總結

set 集合 一直以來,js只能使用陣列和物件來保持多個資料,缺乏像其他語言那樣擁有豐富的結合型別 因此,es6 新增了兩種結合型別 set 和 map 用於不同場景發揮作用。1.set 用於存放不能重複的資料 如何建立乙個set 如 const sets newset 建立乙個沒有任何內容的set...

ES6學習筆記 Set和Map

set類似於陣列,但是沒有重複的值,成員是唯一的。set例項有兩個屬性 set.prototype.constructor指向set本身,set.prototype.size返回set例項的成員總數。set例項的方法分為兩大類 操作方法 用於運算元據 和遍歷方法 用於遍歷成員 array.from方...

es6 模組化(es6學習筆記07)

模組化 是指將乙個大的程式檔案,拆分成許多小的檔案,然後將小檔案組合起來。功能模組主要由兩個命令構成 export和import 1.2.1 export 使用 1.分別暴露 export let book 西遊記 export function like 2.統一暴露 let book 西遊記 f...