摘要:返回一個(gè)布爾值,表示該值是否為的成員。注意被加入了兩次方法可以將結(jié)構(gòu)轉(zhuǎn)為數(shù)組。數(shù)組去重的函數(shù)遍歷的方法返回鍵名的遍歷器返回鍵值的遍歷器返回鍵值對(duì)的遍歷器使用回調(diào)函數(shù)遍歷每個(gè)成員需要特別指出的是,的遍歷順序就是插入順序。
新增加的數(shù)據(jù)類型 類似于數(shù)組 但是和數(shù)組不同的地方就是 里面不會(huì)存在相同的值,在里面 NaN都只能出現(xiàn)一個(gè),但是里面有一個(gè)問題,就是引用類型的值是不會(huì)相等的
let set = new Set(); set.add({}); set.size // 1 set.add({}); set.size // 2
如何使用
let set = new Set();
參數(shù)(數(shù)組 或者 具有 iterator接口的其他數(shù)據(jù))
// 例一 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
特殊的應(yīng)用 數(shù)組去重
[...new Set(array)]
全部的api 增加 刪除 查找 清除 (沒得修改)
Set.prototype.constructor:構(gòu)造函數(shù),默認(rèn)就是Set函數(shù)。 Set.prototype.size:返回Set實(shí)例的成員總數(shù)。 add(value):添加某個(gè)值,返回 Set 結(jié)構(gòu)本身。 delete(value):刪除某個(gè)值,返回一個(gè)布爾值,表示刪除是否成功。 has(value):返回一個(gè)布爾值,表示該值是否為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 結(jié)構(gòu)轉(zhuǎn)為數(shù)組。
const items = new Set([1, 2, 3, 4, 5]); const array = Array.from(items); // 數(shù)組去重的函數(shù) function dedupe(array) { return Array.from(new Set(array)); }
遍歷的方法
keys():返回鍵名的遍歷器
values():返回鍵值的遍歷器
entries():返回鍵值對(duì)的遍歷器
forEach():使用回調(diào)函數(shù)遍歷每個(gè)成員
需要特別指出的是,Set的遍歷順序就是插入順序。這個(gè)特性有時(shí)非常有用,比如使用 Set 保存一個(gè)回調(diào)函數(shù)列表,調(diào)用時(shí)就能保證按照添加順序調(diào)用。
set = new Set([1, 4, 9]); set.forEach((value, key) => console.log(key + " : " + value)) // 1 : 1 // 4 : 4 // 9 : 9
我們可以簡(jiǎn)介使用數(shù)組的方法 先轉(zhuǎn)換為數(shù)組 利用 Array.from()或者 [...] 解構(gòu)賦值
let set = new Set([1, 2, 3]); set = new Set([...set].map(x => x * 2)); // 返回Set結(jié)構(gòu):{2, 4, 6}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94193.html
摘要:本身是一個(gè)構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)。該數(shù)組的成員是一個(gè)個(gè)表示鍵值對(duì)的數(shù)組。張三張三事實(shí)上,不僅僅是數(shù)組,任何具有接口每個(gè)成員都是一個(gè)雙元素的數(shù)組的數(shù)據(jù)結(jié)構(gòu)都剋以當(dāng)作構(gòu)造函數(shù)的參數(shù)。實(shí)例的屬性和操作方法屬性屬性返回結(jié)構(gòu)的成員總數(shù)。 ES6提供了新的數(shù)據(jù)結(jié)構(gòu)Set,它類似與數(shù)組,但是成員值都是唯一的,沒有重復(fù)的值。 Set本身是一個(gè)構(gòu)造函數(shù),用來生成Set數(shù)據(jù)結(jié)構(gòu)。 const s = ...
摘要:返回一個(gè)布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。上面代碼中,方法返回的遍歷器,同時(shí)包括鍵名和鍵值,所以每次輸出一個(gè)數(shù)組,它的兩個(gè)成員完全相等。因此,適合臨時(shí)存放一組對(duì)象,以及存放跟對(duì)象綁定的信息。 Js大部分歷史時(shí)期都只存在一種集合類型,也就是數(shù)組類型。數(shù)組在 JS 中的使用正如其他語言的數(shù)組一樣,但缺少更多類型的集合導(dǎo)致數(shù)組也經(jīng)常被當(dāng)作隊(duì)列與棧來使用。數(shù)組只使用了數(shù)值...
摘要:返回一個(gè)布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。該數(shù)組中的每一項(xiàng)也必須是數(shù)組,內(nèi)部數(shù)組的首個(gè)項(xiàng)會(huì)作為鍵,第二項(xiàng)則為對(duì)應(yīng)值。返回所有成員的遍歷器需要特別注意的是,的遍歷順序就是插入順序。 Js大部分歷史時(shí)期都只存在一種集合類型,也就是數(shù)組類型。數(shù)組在 JS 中的使用正如其他語言的數(shù)組一樣,但缺少更多類型的集合導(dǎo)致數(shù)組也經(jīng)常被當(dāng)作隊(duì)列與棧來使用。數(shù)組只使用了數(shù)值型的索引,而...
摘要:返回一個(gè)布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。返回的都是遍歷器對(duì)象。結(jié)構(gòu)的實(shí)例的方法,用于對(duì)每個(gè)成員執(zhí)行某種操作,沒有返回值。這個(gè)特點(diǎn)意味著,無法引用的成員,因此是不可遍歷的。數(shù)組成員是一個(gè)或多個(gè)表示鍵值對(duì)的一維數(shù)組。 本文字?jǐn)?shù):4700+,閱讀時(shí)間約10分鐘。 如果有理解不到位的地方,歡迎大家糾錯(cuò)。 一、Set 【01】Set是一種數(shù)據(jù)結(jié)構(gòu)。類似于數(shù)組,但是成員的值...
摘要:中模擬與長(zhǎng)久以來,數(shù)組一直是中唯一的集合類型。用數(shù)組初始化集合事實(shí)上,只要是可迭代對(duì)象數(shù)組集合集合,都可以作為構(gòu)造函數(shù)的參數(shù)。構(gòu)造函數(shù)通過迭代器從參數(shù)中提取值。 ES5中模擬Set與Map 長(zhǎng)久以來,數(shù)組一直是JavaScript中唯一的集合類型。如果開發(fā)者們需要使用非數(shù)值型索引,就會(huì)用非數(shù)組對(duì)象創(chuàng)建所需的數(shù)據(jù)結(jié)構(gòu),而這就是Set集合與Map集合的早期實(shí)現(xiàn)。 一般來說,Set集合常被用...
摘要:返回一個(gè)布爾值,表示該值是否為的成員。返回鍵名的遍歷器返回鍵值的遍歷器返回鍵值對(duì)的遍歷器使用回調(diào)函數(shù)遍歷每個(gè)成員需要特別指出的是,的遍歷順序就是插入順序。該數(shù)組的所有成員,都會(huì)自動(dòng)成為實(shí)例對(duì)象的成員。這意味著,數(shù)組的成員只能是對(duì)象。 1.Set ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。Set 本身是一個(gè)構(gòu)造函數(shù),用來生成 Set 數(shù)據(jù)結(jié)構(gòu)...
閱讀 1948·2021-11-19 09:40
閱讀 2140·2021-10-09 09:43
閱讀 3297·2021-09-06 15:00
閱讀 2815·2019-08-29 13:04
閱讀 2773·2019-08-26 11:53
閱讀 3531·2019-08-26 11:46
閱讀 2326·2019-08-26 11:38
閱讀 396·2019-08-26 11:27