ES6的Set、Map資料結構 陣列
Set 陣列
filter過濾陣列的數值
var ss = [1,2,3,4,5,6,7,8]
ss.filter(function(ele){
if(ele>5){
return true
}
return false
});
console.log(ss) //[6,7,8]
並集
合併兩個陣列,去掉重複的
let a = new Set([1,2,3,4])
let b = new Set({4,5,6})
let union = new Set([...a,...b])
console.log([...union]) //1 2 3 4 5 6 去掉重複的4
交集
利用filter()和has()來進行資料交集
let a = new Set([1,2,3,4])
let b = new Set({4,5,6})
let intersect = [...a].filter(function(ele){
return b.has(elem)
})
// es6 簡寫方式
// let intersect = [...a].filter(
// x => x.has(x)
// })
差集
let a = new Set([1,2,3,4])
let b = new Set({4,5,6})
let difference= [...a].filter(function(ele){
return !b.has(elem)
})
//1,2,3
WeakSet 針對物件
1.建構函式
WeakSet與Set結構類似,也是不重複的值的集合。但是它與Set有兩個區別。
首先,WeakSet的成員只能是物件,而不能是其它型別的值。
其次,WeakSet中的物件都是弱引用,即垃圾回收機制不考慮WeakSet對該物件的引用。也就是說,如果其它物件不在引用該物件,那麼垃圾回收機制會自動回收該物件所佔用的記憶體,不考慮該物件還存在於WeakSet中。這個特點意味著無法引用WeakSet的成員,因此WeakSet是不可遍歷的。
報錯
var ws = new WeakSet();
ws.add(1);
// Uncaught TypeError: Invalid value used in weak set
2.屬性和方法
- add(value)
- delete()
- has()
var weakset = new WeakSet()
let aObj = {a:'aa'}
weakset .add(aObj)
- 適用
可以用在儲存DOM節點,當DOM節點新增和刪除後不會導致記憶體洩漏。
weakset 不能取值,不能顯示 只用來表示是否有重複的物件
Map 物件
var mapData = new Map();
var obj1 = {};
var obj2 = {};
mapData.set(obj1,'111') //新增元素
mapData.set(obj2,'333')//新增元素
console.log( mapData.get(obj1) ) // 獲取
console.log( mapData.has(obj1) ) //判斷
console.log( mapData.delete(obj1) ) 刪除
mapData.clear() //清空
1.目的Map結構與物件類似,與傳統的物件對比而言,傳統僅能使用字串當做鍵, Map結構則可以使用變數當做鍵。這種對應關係可以稱之為“值--值”對應,是物件的完善版。
2.建構函式構造
函式接受一個二維陣列當做引數。
var m = new Map([['name','zhangsan'],['sex','male']]);
console.log(m);// Map {"name" => "zhangsan", "sex" => "male"}
如果對同一個鍵多次賦值,後面的值將覆蓋前一次的值。
只有對同一物件的引用,Map結構才將其視為同一個鍵。
3.屬性和方法
- size
- set(key,value)
- get(key)
- has(key)
- delete(key)
- clear()
4.遍歷方法 - keys()
- values()
- entries()
- forEach()
5.Map轉換為陣列結構
var m = new Map([['0','zhangsan'],['1','lisi']]);
console.log([...m.keys()]);// ["0", "1"]
WeakMap
與Map類似,唯一區別在於它只接受物件作為鍵名,而且不計入垃圾回收機制。
四個方法:
相關文章
- ES6之Set和Map資料結構資料結構
- ES6的Set和Map資料結構,由你製造資料結構
- Set和Map資料結構。資料結構
- ES6 Set 資料結構資料結構
- ES6 Map 資料結構資料結構
- ES6之Map資料結構資料結構
- 資料結構-陣列資料結構陣列
- 資料結構 - 陣列資料結構陣列
- 資料結構之「陣列」資料結構陣列
- 資料結構之陣列資料結構陣列
- 資料結構2——陣列資料結構陣列
- Java版-資料結構-陣列Java資料結構陣列
- LeetCode之資料結構——陣列LeetCode資料結構陣列
- JS資料結構(一)——陣列JS資料結構陣列
- JavaScript資料結構01 - 陣列JavaScript資料結構陣列
- 資料結構——樹狀陣列資料結構陣列
- Map 資料結構資料結構
- ES6【Set 、 WeakSet 、Map、WeakMap 】
- ES6 Set,WeakSet,Map,WeakMap
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- JavaScript資料結構之陣列棧佇列JavaScript資料結構陣列佇列
- js實現資料結構--陣列JS資料結構陣列
- 基礎資料結構之陣列資料結構陣列
- pyspark 解析kafka陣列結構資料SparkKafka陣列
- 玩轉資料結構之陣列資料結構陣列
- ES6中的Map與Set集合
- python資料結構setPython資料結構
- 【深入淺出ES6】Set\Map
- java資料結構學習之陣列Java資料結構陣列
- (一)Java資料結構之稀疏陣列Java資料結構陣列
- 資料結構與演算法——陣列資料結構演算法陣列
- 資料結構之php實現陣列資料結構PHP陣列
- es6 的學習之 set 和 map
- js資料結構--集合(set)JS資料結構
- ES6 系列之模擬實現一個 Set 資料結構資料結構
- 資料結構之陣列和矩陣--矩陣&不規則二維陣列資料結構陣列矩陣
- js資料結構--字典(map)JS資料結構
- 資料結構與演算法 | 陣列(Array)資料結構演算法陣列
- 【資料結構與演算法】——稀疏陣列資料結構演算法陣列