ES6學習歷程 17 — collections(二)
ES6 Set
Published in
4 min readApr 8, 2021
ES6提供了一個新的資料型態-Set,Set裡的元素可以是任何型態。Set有點像陣列 (array),但不同的是,set裡的值都是惟一值,不會有重複。當存入重複值時會被忽略。
創建Set語法:
let setObject = new Set();
範例:
let chars = new Set(['a', 'a', 'b', 'c', 'c']);console.log(chars); // Set { 'a', 'b', 'c' }
Set 物件的屬性和方法 Properties and Methods
- add(value)
新增元素,add() 方法會回傳 Set 本身。
chars.add('d');console.log(chars);// Set { 'a', 'b', 'c', 'd' }chars.add('e').add('f');console.log(chars);// Set { 'a', 'b', 'c', 'd', 'e', 'f' }
- has(value)
回傳true / false,判斷 Set 中有沒某個值。
let exist = chars.has('a');console.log(exist); // trueexist = chars.has('z');console.log(exist); // false
- delete(value)
刪除某個值,如果刪除成功會回傳 true,否則回傳 false。
chars.delete('f');console.log(chars); // Set {'a', 'b', 'c', 'd', 'e'}// Set { 'a', 'b', 'c', 'd', 'e' }
- clear()
刪除 Set的所有的元素。
chars.clear();console.log(chars); // Set{}
遍歷Set 元素
- for…of
let roles = new Set();roles.add('admin').add('editor').add('subscriber');for (let role of roles) { console.log(role);}// admin// editor// subscriber
- forEach
roles.forEach(role => console.log(role.toUpperCase()));
- keys() / valuse()
Set 資料結構中沒有 key,只有 value,或說在 Set 中 key 等於 value。所以keys() 跟 values() 的方法回傳結果都是所有元素。
var mySet = new Set([50, 'a', {foo: 'bar'}]);for (let v of mySet.values()) { console.log(v);}// 50// a// {foo: 'bar'}for (let k of mySet.keys()) { console.log(k);}// 50// a// {foo: 'bar'}
- entries()
回傳一個物件,其中每一個值都是 [value, value] 結構的陣列。
for (let [key, value] of roles.entries()) { console.log(key === value);}// true// true// true
範例:
for (let item of roles.entries()) { console.log(item);}// ['admin', 'admin']// ['editor', 'editor']// ['subscriber', 'subscriber']