1. 程式人生 > >ES6裡面的Set和Weak Set

ES6裡面的Set和Weak Set

1》Set

Set是一種有序的列表,其中包含的是一些相互獨立的非重複的值

Set具有的方法:

1.新增  add()方法

let set = new Set();
set.add(1);
console.log(set.size);  //1

a.這裡需要注意的就是set集合中,不會盡行強制型別的轉換,所有5和"5"可以作為兩個獨立的元素存在。

b.如果你給set集合裡面新增幾個重複的值的話,這裡只會儲存重複值中的一個。

2.刪除 delete()方法

delete的方法和add方法的使用方法是一樣的

let set = new Set();
set.add(1);
console.log(set.size);  //1
set.delete(1);
console.log(set.size); //0

3。清除裡面的所有的元素:   clear()

用法同上,只不過這裡不用傳入引數了

4. 判斷集合裡面是否包含哪個元素  has()

let set = new Set();
set.add(1);
console.log(set.has(1));  //true

5.如果你想對集合裡面的每一個元素進行操作那麼forEach()方法就會起到很大的作用了

forEach()接受3個引數:

        1.Set集合下一次索引的位置

        2 和第一個引數保持一致

        3被遍歷的Set集合本身

let set = new Set([1,2]);
set.forEach(function(value,key,ownerSet){
     console.log(key+" "+value);
     console.log(ownerSet==set);
});

天呀!如果我不想對set集合裡面的左右的元素進行操作,我只想對其中的一個進行操作,那該怎麼呢?

我們可以把set與陣列的相互轉化

let set  = new Set([1,2,3,4,5,6,7]);
let value = [...set];
console.log(value);
你也看到了,其中將陣列當作引數傳進去就可以轉化為set了,利用擴充套件操作符就可以將set轉化為陣列。

》2 WeakSet

支援的方法add(),delete(),has()這3個方法。

現在就來說說其中的弱體現在哪裡?

let set1 = new WeakSet();
     set1.add(1);   //報錯

這裡體現的就是其中的第一弱:在Weak Set裡面傳進去的引數必須是非null型別的物件。

let set = new Set();
key = {};
set.add(key);
console.log(set.size);  //1
key = null;
console.log(set.size);  //1



// 現在是 WeakSet 
let set1 = new WeakSet();
key1 = {};
set1.add(key1);
console.log(set1.has(key1));  //true
key1 = null;
console.log(set1.has(key1));  //false

這裡體現的就是其中的的弱引用了。對於Set來說將鍵設定為null之後,垃圾回收站並沒有回收,我們還是能訪問到,但是對於WeakSet來說垃圾回收機制就回收了。這裡體現的就是它的第二弱了。

再有就是其中WeakSet的方法比較少。

最後在這裡留一個小問題:試著利用set的特性,寫一個方法實現去掉數組裡面的重複的元素。如果寫不出來的話,看看我的下一篇部落格吧!Map 和 WeakMap

相關推薦

ES6裡面的SetWeak Set

1》SetSet是一種有序的列表,其中包含的是一些相互獨立的非重複的值。Set具有的方法:1.新增  add()方法let set = new Set(); set.add(1); console.log(set.size); //1a.這裡需要注意的就是set集合中,不會

Training set,Gallery set Probe set的區別

數據 face 分享 mod 就是 log acer set img 這段時間看了CVPR2017的這篇論文”SphereFace:Deep Hypersphere Embedding for Face Recognition" 裏面有提到Probe set,當時不太懂什麽

從vue源碼看Vue.set()this.$set()

time his 觸發 inf mbo 原型 ins 處理對象 () 前言 最近死磕了一段時間vue源碼,想想覺得還是要輸出點東西,我們先來從Vue提供的Vue.set()和this.$set()這兩個api看看它內部是怎麽實現的。 Vue.set()和this.$set(

Scala集合,序列(可變不可變List),List各種函式的使用,不可變Set可變Set,Map

1. 集合 Scala的集合有三大類:序列Seq、集Set、對映Map,所有的集合都擴充套件自Iterable特質 在Scala中集合有可變(mutable)和不可變(immutable)兩種型別,immutable型別的集合初始化後就不能改變了(注意與va

Scala集合,序列 可變不可變List List各種函式的使用 不可變Set可變Set Map

                     1. 集合Scala的集合有三大類:序列Seq、集Set、對映Map,所有的集合都擴充套件自Iterable特質 在Scala中集合有可變(mutable)和不可變(immutable)兩種型別,immutable型別的集合初始化後就不能改變了(注意與val修飾的變數

.Net Core下 Redis的String Hash List SetSorted Set的例子

1.新建一個.Net Core控制檯應用程式,用Nuget匯入驅動 開啟程式包管理控制檯, 執行以下程式碼。 PM> Install-Package ServiceStack.Redis 即可新增Redis的引用。 2.StringDemo String型別是最常用

問題:Vue.set更新檢視的問題及Vue.setvm.$set的區別

在vue中動態新增屬性並更新dom時碰到了如下問題。 和下面這篇部落格碰到的問題一摸一樣。 傳送門 都是第一次Vue.set有效,之後再變動set新增的屬性的值時無效。 用評論中

es6 Map,Set WeakMap,WeakSet

mage span 移除 種類 安全 時有 簡單 weak 方便 這些是新加的集合類型,提供了更加方便的獲取屬性值的方法,不用像以前一樣用hasOwnProperty來檢查某個屬性是屬於原型鏈上的呢還是當前對象的。同時,在進行屬性值添加與獲取時有專門的get,set 方法。

js ES6 SetMap數據結構詳解

... 文章 正常 col rfi 關註 ash comm 遍歷 這篇文章主要介紹了ES6學習筆記之Set和Map數據結構,結合實例形式詳細分析了ECMAScript中基本數據結構Set和Map的常用屬性與方法的功能、用法及相關註意事項,需要的朋友可以參考下

ES6中的SetMap集合

這就是 his 使用場景 ont 最大 urn 受限 我們 ... 前面的話   在ES6標準制定以前,由於可選的集合類型有限,數組使用的又是數值型索引,因而經常被用於創建隊列和棧。如果需要使用非數值型索引,就會用非數組對象創建所需的數據結構,而這就是Set集合與Map集

es6 語法 (map、setarray 的對比)

each exist modify es6 [] {} 對比 dex style //數據結構對比 增查改刪 { //map和array對比 let map = new Map(); let array = []; //增 m

es6 語法 (map、setobj 的對比)

map、set modify () logs div map del blog log //數據結構對比 增查改刪 { //map、set和Object let item = {t:1}; let map = new Map(); let

es6 Set Map 數據結構

lba lsi 一個數 nvl 接受 atm imu otg 成功 ES6提供了新的數據結構Set,它類似於數組,但是成員的值都是唯一的,沒有重復的值。   Set 本身是一個數據結構,用來生成Set 數據結構。     const s = new Set();   

es6SetMap

console sss arr 構造 ons from true 數組的並集 無重復 //Set 和Map類似數組 成員唯一(無重復值) set 構造函數 var arr3=[1,2,3,3,4,5,3,5] a,三種添加方式 const arr4=new Set();

ES6知識整理(7)--SetMap數據結構

ora ear 踏實 9.png 叠代 數據 edi KS 返回鍵 (文章會同步到博客園,技術類文章還是該讓搜索引擎察覺比較好)Set構造函數初始化一個值不重復的數組,適合做數組去重。2種數組去重的方法:這裏再說下Array.from(),表示以一個類數組||可叠代對象,創

ES6 -Set Map 數據結構

gin UNC uncaught pre console fine reac error: div 一、set 1.set數據結構:類似數組,但是裏面不能有重復值 2.set語法, new Set([]) let set=new Set([1,2,1]); cons

ES6 Set Map

bsp 無法 style 9.png 分享 http es5 scrip null ES5 模擬Set 與 Map 集合 Set 常用於檢查對象中是否存在某個鍵名 Map集合常被用於獲取已存的信息 所有對象的屬性名必須是字符串,那麽必須確保每個鍵名都是字符串類型且在對象

ES6SetMap

Set ES6提供了新的資料結構Set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。 Set函式可以接受一個數組(或類似陣列的物件)作為引數,用來初始化。 // 例一 var set = new Set([1, 2, 3, 4, 4]); [...set] // [1, 2,

es6(三setmap資料結構)

es6中提供了一個新的資料結構Set,他有點類似陣列,但和陣列不同的是,在裡面你如果寫入重複的值的話,他不會顯示重複值。 const s =new Set(); [2,3,4,5,6,6,6,7,8,9].forEach(x => s.add(x)); for (let i

ES6 SetMap資料結構(可轉為陣列)

一:Set 基本用法 ES6 提供了新的資料結構 Set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。(不包括空物件) Set 本身是一個建構函式,用來生成 Set 資料結構。 const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forE