摘要:本身是一個構造函數,用來生成數據結構可以接受一個數組或者類數組對象作為參數,用來初始化可用于數組去重方法可以將結構轉換為數組向加入值時,不會發生類型轉換類似于精確相等,但是要注意在里是等于自身的。
ES6:Set
大神地址:來自阮一峰大神的ES6入門書籍
了解SetES6提供了數據結構Set。類似于數組,但是沒有重復值。
Set本身是一個構造函數,用來生成Set數據結構
const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for(let i of s ) { console.log(i); //2 3 5 4 }
Set可以接受一個數組(或者類數組對象)作為參數,用來初始化
var set = new Set([1, 2, 3, 4, 4]); [...set]; // [1, 2, 3, 4]
可用于數組去重[...new Set(array)]
Array.from()方法可以將Set結構轉換為數組Array.from(new Set(array))
向Set加入值時,不會發生類型轉換(類似于精確相等===),但是要注意在Set里NaN是等于自身的。另外兩個對象總是不相等的。
let set = new Set(); let a = NaN; let b = NaN; set.add(a); set.add(b); set; //{NaN} 只能加入一個,說明Set內部兩個NaN是相等的Set實例的屬性和方法
屬性:
Set.prototype.constructor:構造函數,默認就是Set函數
Set.prototype.size:返回實例的成員總數
操作方法(方法的具體實現見:我對JS集合的簡單學習):
add(value):添加一個值,返回Set結構本身
delete(value):刪除某個值,返回布爾值
has(value):返回布爾值,表示是否是成員
clear():清除所有成員,無返回值
s.add(1).add(2).add(2); //鏈式寫法 s.size(); //2 s.has(3); //false s.delete(2); s.has(2); //false
遍歷方法
keys():返回鍵名的遍歷器(什么是遍歷器?Iterator)
values():返回鍵值的遍歷器
entries():返回鍵值對的遍歷器
forEach():使用回調函數遍歷每個成員
這里要注意Set的鍵名和鍵值是同一個值,所以key()和values()行為是一致的。
let set = new Set(["red", "green", "no"]); for(let item of set.keys()) { console.log(item); //red green no } for(let item of set.values()) { console.log(item); //red green no } for(let item of set.entries()) { console.log(item); //["red": "red"] ["green": "green"] ["no": "no"] } //對每個成員執行某種操作,參數依次為鍵值、鍵名、集合本身 new Set([1, 2, 3]).forEach((value, key) => console.log(value * 2)); //2 4 6操作集合
let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]); //并集 let union = new Set([...a, ...b]); //{1, 2, 3, 4} //交集 let intersect = new Set([...a].filter(x => b.has(x))); //{2, 3} //差集 let difference = new Set([...a].filter(x => !b.has(x))); //{1}
號外:擴展運算符(...)內部使用for...of循環,所以應該知道for of是干嘛的吧
數組的map()和filter()可用于Set
let set = new Set([1, 2, 3]); set = new Set([...set].map(x => x * 2)); //set: {2, 4, 6} let set = new Set([1, 2, 3, 4, 5]); set = new Set([...set].filter(x => (x % 2) == 0)); //set {2, 4}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82154.html
摘要:引入的數據結構新加入的數據類型有這些數據結構的支持并不廣泛,在寫這篇文章的時候。是或其他可枚舉的對象,其每個元素是的元數組。開頭的和不對持有引用,不影響。因此,他們沒有辦法對自身的進行直接的枚舉。目前新版的和支持。 原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.html 源代...
摘要:學習筆記工作中常用到的語法只是簡單提及和,今天有空于是寫了這篇文章深入理解中的和數據結構,與其它數據結構的互相轉換。的提供了新的數據結構。本身是一個構造函數,用來生成數據結構。 文中的內容主要是來自于阮一峰的《ES6標準入門》(第三版)?!秾W習ES6筆記──工作中常用到的ES6語法》只是簡單提及Set和Map,今天有空于是寫了這篇文章──《深入理解:ES6中的Set和Map數據結構,M...
摘要:創建并添加項目可以使用數組來初始化一個,并且構造器會確保不重復地使用這些值使用方法來測試某個值是否存在于中移除值使用方法來移除單個值,或調用方法來將所有值從中移除。屬性的初始化將數組傳遞給構造器,以便使用數據來初始化一個。 主要知識點:Set的基本操作,Weak Set,Map的基本操作,Weak MapshowImg(https://segmentfault.com/img/bVbf...
摘要:一概述集合是引入的新的內置對象類型,其特點同數學意義的集合,即集合內所有元素不重復元素唯一。數組集合對比數組和集合,數組可以加入重復數據,而集合的所有元素是唯一的不允許重復。因此,適合臨時存放一組對象,以及存放跟對象綁定的信息。 本文同步帶你入門 帶你入門 JavaScript ES6 (五) 集合,轉載請注明出處。 前面我們學習了: for of 變量和擴展語法 塊作用域變量和解構...
摘要:提供了新的數據結構。用法結構有以下屬性構造函數,默認就是函數。結構有以下方法添加某個值,返回結構本身。返回一個布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。 Set ES6 提供了新的數據結構 Set。它類似于數組,但是成員的值都是唯一的,沒有重復的值。 用法:new Set([iterable]) const set = new Set([1, 2, 3, 4, 4, 4]...
閱讀 2879·2019-08-30 15:44
閱讀 1907·2019-08-29 13:59
閱讀 2851·2019-08-29 12:29
閱讀 1097·2019-08-26 13:57
閱讀 3210·2019-08-26 13:45
閱讀 3340·2019-08-26 10:28
閱讀 849·2019-08-26 10:18
閱讀 1703·2019-08-23 16:52