Set是一個(gè)可存儲(chǔ)基礎(chǔ)類型及引用類型的容器,且容器中數(shù)據(jù)唯一。
(唯一:除NaN==NaN外,其余使用===判斷)
常用屬性與方法:
Set.prototype.size -- 返回Set實(shí)例的個(gè)數(shù) Set.prototype.add() --添加元素 Set.prototype.delete() --刪除元素 Set.prototype.has() --判斷是否存在某元素 Set.prototype.clear() --清空容器 Set.prototype.forEach() --遍歷容器 Set.prototype.keys() --返回容器鍵名遍歷器 Set.prototype.values() --返回容器鍵值遍歷器器 Set.prototype.entries() --返回容器鍵值對(duì)的遍歷器
基本用法:
//創(chuàng)建容器 let s = new Set(); //添加基本類型元素 --元素compare不存在隱式轉(zhuǎn)換 使用===,切記 s.add(1); s.add("1"); //添加特殊類型元素 --特例 NaN與NaN 比較結(jié)果返回true s.add(NaN); s.add(NaN); //添加引用類型元素 -- 直接添加引用地址不同,所以屬于兩個(gè)元素 s.add({a:1}); s.add({a:1}); //添加對(duì)象的形式,則只會(huì)添加一個(gè)元素進(jìn)去 let obj = {a:2}; s.add(obj); s.add(obj); console.log([...s]); //添加順序與數(shù)組push一樣 /*?[1, "1", {…}, {…}, NaN, {…}] 0: 1 1: "1" 2: {a: 1} 3: {a: 1} 4: NaN 5: {a: 2} length: 6 */ //判斷元素是否存在容器中 存在返回true,不存在返回false s.has(obj) //true s.has({a:1}) //false s.has("1") //true //刪除元素 -- 刪除成功返回true,失敗返回false s.delete({a:1}); //false s.delete(obj) //true console.log([...s]); /* [1, "1", {…}, {…}, NaN] 0:1 1:"1" 2:{a: 1} 3:{a: 1} 4:NaN length:5 */ //size屬性存儲(chǔ)容器元素個(gè)數(shù) console.log(s.size) //5 //清空容器 s.clear(); s.size; //0
遍歷:
keys() -- 返回鍵名的遍歷器 values() -- 返回鍵值的遍歷器 entries() -- 返回鍵值對(duì)的遍歷器 注意: Set的遍歷順序即為添加順序,且Set沒有鍵名,故Set的鍵名與鍵值為同一值 let s = new Set(["a",11,{a:1},NaN]); s.keys(); //SetIterator?{"a", 11, {…}, NaN} [...s.keys()] //--轉(zhuǎn)化為數(shù)組形式 //["a", 11, {…}, NaN] //遍歷容器的鍵名 for(let item of s.keys()){ console.log(item); } /* a 11 {a: 1} NaN */ //----values()與entries()用法同上 ---------------------------------------------------------- /* forEach() -- 使用回調(diào)函數(shù)遍歷每個(gè)元素 第一個(gè)參數(shù)為遍歷函數(shù) 函數(shù)參數(shù)依次為:鍵值、鍵名、集合本身,且參數(shù)可選 第二個(gè)參數(shù)可傳入內(nèi)部this對(duì)象(可選參數(shù)) */ //僅僅使用遍歷的用法 -- 常用 s.forEach((v,k,obj)=>{ console.log(k+":"+v); console.log(obj); }); /* a:a Set(4)?{"a", 11, {…}, NaN} 11:11 Set(4)?{"a", 11, {…}, NaN} [object Object]:[object Object] Set(4)?{"a", 11, {…}, NaN} NaN:NaN Set(4)?{"a", 11, {…}, NaN} */ //第二個(gè)參數(shù)用法 let op = { minus:function(x){ return x*x; } }; let ss = [1,2,3,4,5,6]; ss.forEach((v)=>console.log(op.minus(v)),op); /* 1 4 9 16 25 36 */
Set的使用場(chǎng)景:
//數(shù)組去重: let arr = [1,23,4,4,56,5,56]; arr = [...new Set(arr)]; //[1, 23, 4, 56, 5] //數(shù)組的并集、交集與差集 let a = [1,3,5,7,10]; let b = [1,2,4,6,8,10]; //并集 [...new Set([...a,...b])]; //[1, 3, 5, 7, 10, 2, 4, 6, 8] //交集 let sss = new Set(b); a.filter(i=>sss.has(i)) //[1, 10] //差集 a.filter(i=>!sss.has(i)); //[3, 5, 7]
第一次寫文章,如有bug,請(qǐng)指正Thanks?(?ω?)?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94488.html
摘要:返回一個(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)...
摘要:提供了新的數(shù)據(jù)結(jié)構(gòu)。用法結(jié)構(gòu)有以下屬性構(gòu)造函數(shù),默認(rèn)就是函數(shù)。結(jié)構(gòu)有以下方法添加某個(gè)值,返回結(jié)構(gòu)本身。返回一個(gè)布爾值,表示該值是否為的成員。清除所有成員,沒有返回值。 Set ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。 用法:new Set([iterable]) const set = new Set([1, 2, 3, 4, 4, 4]...
摘要:數(shù)據(jù)類型基本用法提供了一種類似于數(shù)組的新的數(shù)據(jù)結(jié)構(gòu)。實(shí)例屬性和方法本身是一個(gè)構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)。返回一個(gè)布爾值,表示該值是否為的成員。任何具有接口且每個(gè)成員都是一個(gè)雙元素的數(shù)組的數(shù)據(jù)結(jié)構(gòu)都可以當(dāng)作構(gòu)造函數(shù)的參數(shù)。 Set數(shù)據(jù)類型 基本用法 ES6 提供了一種類似于數(shù)組的新的數(shù)據(jù)結(jié)構(gòu) Set。它的成員的值都是唯一的,沒有重復(fù)的值。 const s = new Set(); [2...
摘要:本身是一個(gè)構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)具有的屬性構(gòu)造函數(shù),默認(rèn)是函數(shù)。舉例鏈?zhǔn)絼h除某個(gè)鍵清空對(duì)象是一個(gè)構(gòu)造函數(shù),用來生成實(shí)例,是異步編程的一種解決方案。構(gòu)造函數(shù)接受一個(gè)函數(shù)作為參數(shù),該函數(shù)的兩個(gè)參數(shù)分別是函數(shù)和。 1、 Set 和 Map數(shù)據(jù)結(jié)構(gòu) Set 數(shù)據(jù)結(jié)構(gòu) Set 類似數(shù)組,但是成員是唯一的,不存在重復(fù)值。 Set本身是一個(gè)構(gòu)造函數(shù),用來生成Set數(shù)據(jù)結(jié)構(gòu)。 Set...
摘要:是提供的一種新的數(shù)據(jù)結(jié)構(gòu),它允許你存儲(chǔ)任何類型的唯一值,而且中的元素是唯一的。我們用操作符來生成一個(gè)對(duì)象基本用法元素是唯一的可以用來數(shù)組去重屬性和方法結(jié)構(gòu)的實(shí)例有以下屬性構(gòu)造函數(shù),默認(rèn)就是函數(shù)。返回實(shí)例的成員總數(shù)。 Set 是ES6提供的一種新的數(shù)據(jù)結(jié)構(gòu),它允許你存儲(chǔ)任何類型的唯一值,而且Set中的元素是唯一的。 我們用new操作符來生成一個(gè)Set對(duì)象 基本用法 let arr = ...
閱讀 936·2023-04-25 23:40
閱讀 3715·2021-11-22 15:22
閱讀 3556·2021-10-09 09:44
閱讀 3408·2021-09-23 11:52
閱讀 1266·2021-09-22 15:43
閱讀 794·2021-09-10 10:51
閱讀 2214·2021-09-06 15:02
閱讀 3208·2021-09-06 15:02