gorm關聯關係
set/weakset map/weakset
set用法
定義:是ES6的一種新的資料結構及(值的集合)
Set跟其他資料結構不同的地方就在於:它的值不會有重複項。
(1)使用:
1 2 3 4 |
let set = new Set([13,3,4,5])
set.add(3)< br data-filtered="filtered">// add新增元素
// 獲取set中值的時候,需要先轉成陣列在取獲取
// set裡的元素是不會重複的
|
(2)size屬性獲取成員的個數。
1 2 3 |
//陣列的長度
//length3
console.log(set.size);//7 |
(3)delete屬性 使用者刪除Set結構中的指定值,刪除成功返回:true,刪除失敗返回:fasle。
1 2 3 4 5 6 |
//刪除元素
//pop
//shift
set.delete(32)
console.log(set);
|
(4)clear方法清除所有成員
1 2 3 |
//清空set
set.clear();
console.log(set);//set(0)
|
(5) has方法判斷set結構中是否含有指定的值。如果有,返回true;如果沒有,返回fasle。
1 2 3 |
//判斷是否存在
console.log(set.has(1));//true
console.log(set.has(32));//false
|
(6) enteries 方法返回一個鍵值對的遍歷器。配合next使用
1 2 3 4 5 6 7 8 9 10 11 12 13 |
let set = new Set([1, 2, 3, 3, 3, 22, 4, 44, 444])
let set1 = set.entries();
console.log(set1.next());
console.log(set1.next());
console.log(set1.next());
console.log(set1.next());
console.log(set1.next());
console.log(set1.next());
console.log(set.keys());
console.log(set.values());
|
(7)keys和values方法
keys()方法:返回鍵名的遍歷器。
values()方法:返回鍵值的遍歷器。
1 2 |
console.log(set.keys());
console.log(set.values());
|
(8)foreach方法 遍歷每一個成員。
1 2 3 4 |
//通過foreach 遍歷
set.forEach(item=>{
console.log(item);
})
|
WeakSet結構
WeakSet結構同樣不會儲存重複的值,不同的是,它的成員必須是物件型別的值。
WeakSet提供了add()方法,delete()方法,has()方法;
不會有keys(),values(),entries(),forEach()等方法和size屬性。
1 2 |
let weakset = new WeakSet([{name:"a"},{age:10}]);//數組裡的資料是物件
console.log(weakset);
|
map的用法:
鍵值對的集合:
使用
1 |
鍵可以是任何型別資料
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
let map = new Map([["key","這個鍵"]]);
console.log(map);
console.log(map.get("key"));
//鍵可以是任何型別資料
//數字
map.set(3,"數字鍵")
console.log(map.get(3))
//布林型別
map.set(true,"鍵是布林");
console.log(map.get(true));
//物件
let obj = { name: "aa" };
map.set( obj ,"物件");
//symbol
let symbol = Symbol("鍵");
map.set(symbol,"鍵是symbol");
|
(1)set()方法作用:給例項設定一對鍵值對,返回map例項。 使用如上程式碼。
(2)get方法 作用:獲取指定鍵名的鍵值,返回鍵值。使用如上程式碼。
(3)delete方法 作用:刪除指定的鍵值對,刪除成功返回:true,否則返回:false。
1 2 3 |
//刪除
map.delete("key");// 鍵名
//判斷是否有指定鍵值對
|
(4)clear 方法 作用:一次性刪除所有鍵值對。
1 2 3 |
//清空鍵值對
map.clear()
console.log(map)
|
(5)has方法 作用:判斷Map例項內是否含有指定的鍵值對,有就返回:true,否則返回:false。
1 2 |
//判斷是否有指定鍵值對
console.log(map.has(3,"數字鍵"));
|
(6)entries方法作用:返回例項的鍵值對遍歷器。
1 2 3 4 |
// 使用entries遍歷
for (let [key, value] of map.entries()) {
console.log(key + " " + value)
}
|
(7)keys和values方法
keys()方法:返回例項所有鍵名的遍歷器。
values()方法:返回例項所有鍵值的遍歷器.
1 2 3 4 5 6 7 8 |
//遍歷鍵名
for (let key of map.keys()) {
console.log(key);
}
//遍歷值
for (let value of map.values()) {
console.log(value);
}
|
(8)forEach方法
1 |
map.forEach((value,key)=>{ console.log(key+":"+value)})
|
(9)size方法
size:獲取例項的成員數
Weak Map
與Map不同點在於WeakMap結構的鍵名只支援引用型別的資料 比如:陣列,物件,函式。
1 2 3 |
let weakmap = new WeakMap([[{name:"aaa"}]])
console.log(weakmap)
|
同樣WeakMap也擁有get、has、delete方法,用法和用途都一樣。不同地方在於,WeakMap不支援clear方法,不支援遍歷,也就沒有了keys、values、entries、forEach
這4個方法,也沒有屬性size。