Set方法

新增長的數據類型 相似於數組 可是和數組不一樣的地方就是 裏面不會存在相同的值,在裏面 NaN都只能出現一個,可是裏面有一個問題,就是引用類型的值是不會相等的api

let set = new Set();

    set.add({});
    set.size // 1
    
    set.add({});
    set.size // 2
如何使用
let set = new Set();
參數(數組 或者 具備 iterator接口的其餘數據)
// 例一
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]

// 例二
const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5

// 例三
const set = new Set(document.querySelectorAll('div'));
set.size // 56

// 相似於
const set = new Set();
document
 .querySelectorAll('div')
 .forEach(div => set.add(div));
set.size // 56
特殊的應用 數組去重
[...new Set(array)]
所有的api 增長 刪除 查找 清除 (沒得修改)
Set.prototype.constructor:構造函數,默認就是Set函數。
Set.prototype.size:返回Set實例的成員總數。
add(value):添加某個值,返回 Set 結構自己。
delete(value):刪除某個值,返回一個布爾值,表示刪除是否成功。
has(value):返回一個布爾值,表示該值是否爲Set的成員。
clear():清除全部成員,沒有返回值。
s.add(1).add(2).add(2);
    // 注意2被加入了兩次

    s.size // 2
    
    s.has(1) // true
    s.has(2) // true
    s.has(3) // false
    
    s.delete(2);
    s.has(2) // false
Array.from方法能夠將 Set 結構轉爲數組。
const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);

// 數組去重的函數
function dedupe(array) {
  return Array.from(new Set(array));
}

遍歷的方法數組

keys():返回鍵名的遍歷器
values():返回鍵值的遍歷器
entries():返回鍵值對的遍歷器
forEach():使用回調函數遍歷每一個成員函數

須要特別指出的是,Set的遍歷順序就是插入順序。這個特性有時很是有用,好比使用 Set 保存一個回調函數列表,調用時就能保證按照添加順序調用。 prototype

set = new Set([1, 4, 9]);
set.forEach((value, key) => console.log(key + ' : ' + value))
// 1 : 1
// 4 : 4
// 9 : 9
咱們能夠簡介使用數組的方法 先轉換爲數組 利用 Array.from()或者 [...] 解構賦值
let set = new Set([1, 2, 3]);
set = new Set([...set].map(x => x * 2));
// 返回Set結構:{2, 4, 6}
相關文章
相關標籤/搜索