ES6中Map與Set的區(qū)別

Map

在JS中的默認對象的表示方式為{}节值,即一組鍵值對,但是鍵必須是字符串。
為了使用Number或者其他數(shù)據(jù)類型作為鍵扳埂,ES6規(guī)范引入了新的數(shù)據(jù)類型Map柜思。
Map是一組鍵值對的結(jié)構(gòu),具有極快的查找速度葱淳。初始化Map需要一個二維數(shù)組定硝,或者直接初始化一個空Map镀虐。

使用Map來實現(xiàn)一組成績單:

var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95

Map具有以下方法:

var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 刪除key 'Adam'
m.get('Adam'); // undefined

由于一個key只能對應一個value近零,所以多次對一個key放入value裙士,后面的值會把前面的值沖掉:

var m = new Map();
m.set('Adam', 67);
m.set('Adam', 88);
m.get('Adam'); // 88

Set

Set也是一組key的集合,與Map類似。但是區(qū)別是Set不存儲value,并且它的key不能重復裹虫。
創(chuàng)建一個Set十酣,需要提供一個Array作為輸入工育,或者直接創(chuàng)建一個空Set:

var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]); // 含1, 2, 3

重復元素會在Set中自動被過濾(注:數(shù)字3和字符串'3'是不同的元素)

var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}

Set具有以下方法:

//通過add(key)方法可以添加元素到Set中,可以重復添加,但不會有效果
s.add(4);
s; // Set {1, 2, 3, 4}
s.add(4);
s; // 仍然是 Set {1, 2, 3, 4}

//通過delete(key)方法可以刪除元素
var s = new Set([1, 2, 3]);
s; // Set {1, 2, 3}
s.delete(3);
s; // Set {1, 2}


add(value):添加某個值奋刽,返回Set結(jié)構(gòu)本身狭魂。 
delete(value):刪除某個值镐牺,返回一個布爾值沛厨,表示刪除是否成功。 
has(value):返回一個布爾值,表示該值是否為Set的成員。 
clear():清除所有成員,沒有返回值接箫。

總結(jié)

1废累、Map 對象是鍵值對集合宾毒,和 JSON 對象類似幢竹,但是 key 不僅可以是字符串還可以是其他各種類型的值包括對象都可以成為Map的鍵

var map = new Map();
var obj = { name: '小緣', age: 14 };
map.set(obj, '小緣喵');
map.get(obj); // 小緣喵
map.has(obj); // true
map.delete(obj) ;// true
map.has(obj); // false

2邑飒、Set 對象類似于數(shù)組撒轮,且成員的值都是唯一的

需要查看WeakSet與WeakMap的區(qū)別故痊,見博主后續(xù)的一篇文章。:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末备蚓,一起剝皮案震驚了整個濱河市流昏,隨后出現(xiàn)的幾起案子刁绒,更是在濱河造成了極大的恐慌速蕊,老刑警劉巖腥光,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡良漱,警方通過查閱死者的電腦和手機椅寺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵进宝,是天一觀的道長。 經(jīng)常有香客問我活尊,道長蛹锰,這世上最難降的妖魔是什么铜犬? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮上陕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘矾瑰。我一直安慰自己,他們只是感情好蹲姐,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著人柿,像睡著了一般柴墩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凫岖,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天江咳,我揣著相機與錄音,去河邊找鬼哥放。 笑死歼指,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的甥雕。 我是一名探鬼主播踩身,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼社露!你這毒婦竟也來了挟阻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呵哨,失蹤者是張志新(化名)和其女友劉穎赁濒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孟害,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年挪拟,在試婚紗的時候發(fā)現(xiàn)自己被綠了挨务。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡玉组,死狀恐怖谎柄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惯雳,我是刑警寧澤朝巫,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站石景,受9級特大地震影響劈猿,放射性物質(zhì)發(fā)生泄漏拙吉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一揪荣、第九天 我趴在偏房一處隱蔽的房頂上張望筷黔。 院中可真熱鬧,春花似錦仗颈、人聲如沸佛舱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽请祖。三九已至,卻和暖如春脖祈,著一層夾襖步出監(jiān)牢的瞬間损拢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工撒犀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留福压,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓或舞,卻偏偏與公主長得像荆姆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子映凳,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354