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裡面的Set和Weak 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 Set和Sorted Set的例子
1.新建一個.Net Core控制檯應用程式,用Nuget匯入驅動 開啟程式包管理控制檯, 執行以下程式碼。 PM> Install-Package ServiceStack.Redis 即可新增Redis的引用。 2.StringDemo String型別是最常用
問題:Vue.set更新檢視的問題及Vue.set和vm.$set的區別
在vue中動態新增屬性並更新dom時碰到了如下問題。 和下面這篇部落格碰到的問題一摸一樣。 傳送門 都是第一次Vue.set有效,之後再變動set新增的屬性的值時無效。 用評論中
es6 Map,Set 和 WeakMap,WeakSet
mage span 移除 種類 安全 時有 簡單 weak 方便 這些是新加的集合類型,提供了更加方便的獲取屬性值的方法,不用像以前一樣用hasOwnProperty來檢查某個屬性是屬於原型鏈上的呢還是當前對象的。同時,在進行屬性值添加與獲取時有專門的get,set 方法。
js ES6 Set和Map數據結構詳解
... 文章 正常 col rfi 關註 ash comm 遍歷 這篇文章主要介紹了ES6學習筆記之Set和Map數據結構,結合實例形式詳細分析了ECMAScript中基本數據結構Set和Map的常用屬性與方法的功能、用法及相關註意事項,需要的朋友可以參考下
ES6中的Set和Map集合
這就是 his 使用場景 ont 最大 urn 受限 我們 ... 前面的話 在ES6標準制定以前,由於可選的集合類型有限,數組使用的又是數值型索引,因而經常被用於創建隊列和棧。如果需要使用非數值型索引,就會用非數組對象創建所需的數據結構,而這就是Set集合與Map集
es6 語法 (map、set和array 的對比)
each exist modify es6 [] {} 對比 dex style //數據結構對比 增查改刪 { //map和array對比 let map = new Map(); let array = []; //增 m
es6 語法 (map、set和obj 的對比)
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();
es6 的Set和Map
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)--Set和Map數據結構
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集合常被用於獲取已存的信息 所有對象的屬性名必須是字符串,那麽必須確保每個鍵名都是字符串類型且在對象
ES6的Set和Map
Set ES6提供了新的資料結構Set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。 Set函式可以接受一個數組(或類似陣列的物件)作為引數,用來初始化。 // 例一 var set = new Set([1, 2, 3, 4, 4]); [...set] // [1, 2,
es6(三set和map資料結構)
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 Set和Map資料結構(可轉為陣列)
一:Set 基本用法 ES6 提供了新的資料結構 Set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。(不包括空物件) Set 本身是一個建構函式,用來生成 Set 資料結構。 const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forE