網站首頁 前端文檔 正文
1.?什么是 Set
Set 可以簡單的看作是數學上的集合。
它是一系列無序,沒有重復數值的數據集合。
2.?Set 構造函數
對于 Set 的構造函數的參數,可以傳遞以下幾種形式。
2.1)?數組
const s = new Set([1, 2, 1]); console.log(s);
這里傳遞了一個數組[1, 2, 1]
作為參數,由于 Set 是無重復數值的集合,所以第三個 1 自動刪除了。
2.2)?字符串
const s = new Set("Hello World!"); console.log(s);
2.3)?arguments
function fun() { const s = new Set(arguments); console.log(s); } fun(1, 2, 3);
2.4)?NodeList
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>set</title> </head> <body> <p>1</p> <p>2</p> <p>3</p> <script> const s = new Set(document.querySelectorAll('p')); console.log(s); </script> </body> </html>
這里將三個p
標簽的引用放進了Set
?s中;
當我們要用的時候,就可以遍歷這個?Set
,然后分別將p
標簽的引用取出來,然后就可以對p
標簽進行修改了。
2.5)? Set
const s1 = new Set([1, 2, 3]); const s2 = new Set(s1); console.log(s2);
這里相當于把s1
復制過去,給了s2
,不過它們不是同一個Set
console.log(s1 === s2);
3.?Set 的實例屬性和方法
Set 的屬性,有一個屬性size
,用來存儲它的成員個數
const s = new Set([1, 2, 3]); console.log(s.size);
Set的方法
- add
給 Set 中添加成員
const s = new Set([1, 2, 3]); // 它的參數只能傳一個 s.add(5); console.log(s); // 可以連綴 add s.add(7).add(9); console.log(s);
- delete
用來刪除 Set 中的成員
const s = new Set([1, 2, 3]); s.delete(2); // 如果要刪除的東西在 Set 中找不到,將什么也不會發生,也不會報錯 s.delete(5); console.log(s);
- has
用來判斷 Set 是否含有某個成員
const s = new Set([1, 2, 3]); console.log(s.has(1)); console.log(s.has(5));
- clear
將會刪除 Set 的所有成員
const s = new Set([1, 2, 3]); s.clear(); console.log(s);
4.?Set 的成員訪問
它的成員訪問要通過?forEach
?方法實現,遍歷 Set,它的遍歷是按成員的添加順序來進行遍歷的。
它有兩個參數,第一個參數為回調函數,第二個參數設定回調函數中this
指向什么,即
s.forEach(回調函數, 回調函數的指向)
我們先來看第一個參數:
對于第一個參數回調函數,它有三個參數:
s.forEach(function(value, key, set){ value 就是 Set 的成員 在 Set 中,value 和 key 是相等的 set 就是前面Set的本身,即這里 set === s });
通過一個例子理解一下:
const s = new Set([1, 2, 3]); s.forEach(function(value, key, set) { console.log(value, key, value === key); console.log(set, set === s); });
再來看第二個參數:
const s = new Set([1, 2, 3]); s.forEach(function(value, key, set) { console.log(this); }, document);
5.?Set 的注意事項
Set 對重復值的判斷基本遵循嚴格相等===
的判斷
不過對于NaN
,在 Set 中,NaN
?等于?NaN
6.?Set 的使用場景
數組去重
let arr = [1, 2, 1]; const s = new Set(arr); arr = [...s]; // 也可以合成一句 // arr = [...new Set(arr)]; console.log(arr);
字符串去重
let str = "11231131242"; const s = new Set(str); str = [...s].join(""); // 也可以寫成一句 // str = [...new Set(str)].join(""); console.log(str);
存放 DOM 元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>set</title> </head> <body> <p>1</p> <p>2</p> <p>3</p> <script> const s = new Set(document.querySelectorAll('p')); s.forEach((elem) => { console.log(elem) }); </script> </body> </html>
總結
原文鏈接:https://blog.csdn.net/m0_51573433/article/details/122282581
相關推薦
- 2023-03-19 教你如何實現在react項目中嵌入Blazor_React
- 2022-07-13 CentOS上Autofs自動掛載iso光盤鏡像-Linux
- 2023-10-30 springboot 配置文件加載順序
- 2022-11-09 golang包循環引用的幾種解決方案總結_Golang
- 2022-07-27 shell腳本中一鍵部署zookeeper集群服務的方法_linux shell
- 2022-03-08 c++實現超簡單的貪吃蛇游戲實例介紹_C 語言
- 2022-10-31 ?Go?語言實現?HTTP?文件上傳和下載_Golang
- 2022-06-18 Android自定義雙向滑動控件_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支