Map和Set
Map
Map
是一組鍵值對(duì)的結(jié)構(gòu)绅作,具有極快的查找速度
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael');
初始化Map
需要一個(gè)二維數(shù)組泣懊,或者直接初始化一個(gè)空Map
嚷辅。
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的鍵值k-v
m.set('Bob', 59);
m.has('Adam'); // 判斷是否存在key 'Adam'
m.get('Adam'); // 67
m.delete('Adam'); // 刪除key 'Adam'
m.get('Adam'); // undefeated
由于一個(gè)key
只能對(duì)應(yīng)一個(gè)value
,所以痢甘,多次對(duì)一個(gè)key
放入value
喇嘱,后面的值會(huì)把前面的值覆蓋掉
var m = new Map();
m.set('Adam', 67);
m.set('Adam', 88);
m.get('Adam'); // 88
Set
和Map
類似,也是一組key
的集合塞栅,但不存儲(chǔ)value
者铜。由于key
不能重復(fù),所以放椰,在Set
中作烟,沒(méi)有重復(fù)的key
。
要?jiǎng)?chuàng)建一個(gè)Set
砾医,需要提供一個(gè)Array
作為輸入拿撩,或者直接創(chuàng)建一個(gè)空Set
:
var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]);
重復(fù)元素在Set
中自動(dòng)被過(guò)濾
var s = new Set([1, 2, 3, 3, '3']);
s; // Set{1, 2, 3, '3'}
s.add(4); // 通過(guò)add(key)方法可以添加元素到Set中,可以重復(fù)添加如蚜,但不會(huì)有效果
s.delete(3); //通過(guò)delete(key)方法可以刪除元素
總結(jié):
>Map
和 Set
的相同與不同:
Map
和 Set
刪除鍵值時(shí)压恒,都是通過(guò)調(diào)用delete(key)
刪除鍵值
Map
添加新鍵值用set(key)
, 獲得鍵值對(duì)應(yīng)的值調(diào)用get(key)
Set
添加新鍵值用add(key)
筆記整理自廖雪峰JavaScript教程