Map與Set

介紹一下Map、Set
1)Map

在ES6之前贝奇,JavaScript的對(duì)象有個(gè)小問(wèn)題虹菲,就是鍵必須是字符串。為了解決這個(gè)問(wèn)題掉瞳,ES6引入了新的數(shù)據(jù)類(lèi)型Map毕源。
Map是一組鍵值對(duì)的結(jié)構(gòu)。它類(lèi)似于對(duì)象陕习,也是鍵值對(duì)的集合霎褐,但是“鍵”的范圍不限于字符串,各種類(lèi)型的值(包括對(duì)象)都可以當(dāng)作鍵衡查。舉個(gè)小小的例子如下:

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

它的優(yōu)點(diǎn)是具有極快的查找速度瘩欺,只需要一個(gè)“名字”-“成績(jī)”的對(duì)照表,直接根據(jù)名字查找成績(jī)拌牲,無(wú)論這個(gè)表有多大,查找速度都不會(huì)變慢歌粥。
Map具有以下方法:

var m = new Map(); //初始化一個(gè)空Map
m.set('Adam', 67); // 添加新的key-value
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 刪除key 'Adam'
m.get('Adam'); // undefined

由于一個(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
2)Set

Set和Map類(lèi)似土居,也是一組key的集合,但不存儲(chǔ)value嬉探。由于key不能重復(fù)擦耀,所以,在Set中涩堤,沒(méi)有重復(fù)的key眷蜓。

創(chuàng)建一個(gè)set
var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]); // 含1, 2, 3

重復(fù)元素在Set中自動(dòng)被過(guò)濾:

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

注:數(shù)字3和字符串'3'是不同的元素。

add(key):添加元素到set中
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}
clear() :清空 Set胎围;獲取 Set 集合長(zhǎng)度用 size 屬性
set.clear();
set.size;
應(yīng)用:使用Set可以很容易地實(shí)現(xiàn)并集(Union)吁系、交集(Intersect)和差集
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 并集
let union = new Set([...a, ...b]);// Set {1, 2, 3, 4}
// 交集
let intersect = new Set([...a].filter(x => b.has(x)));// set {2, 3}
// 差集
let difference = new Set([...a].filter(x => !b.has(x)));// Set {1}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市白魂,隨后出現(xiàn)的幾起案子汽纤,更是在濱河造成了極大的恐慌,老刑警劉巖福荸,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕴坪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡敬锐,警方通過(guò)查閱死者的電腦和手機(jī)背传,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)捆等,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人续室,你說(shuō)我怎么就攤上這事栋烤。” “怎么了挺狰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵明郭,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我丰泊,道長(zhǎng)薯定,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任瞳购,我火速辦了婚禮话侄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘学赛。我一直安慰自己年堆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布盏浇。 她就那樣靜靜地躺著变丧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绢掰。 梳的紋絲不亂的頭發(fā)上痒蓬,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音滴劲,去河邊找鬼攻晒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛班挖,可吹牛的內(nèi)容都是我干的鲁捏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼聪姿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碴萧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起末购,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤破喻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后盟榴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體曹质,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了羽德。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片几莽。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宅静,靈堂內(nèi)的尸體忽然破棺而出章蚣,到底是詐尸還是另有隱情,我是刑警寧澤姨夹,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布纤垂,位于F島的核電站,受9級(jí)特大地震影響磷账,放射性物質(zhì)發(fā)生泄漏峭沦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一逃糟、第九天 我趴在偏房一處隱蔽的房頂上張望吼鱼。 院中可真熱鬧,春花似錦绰咽、人聲如沸菇肃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)巷送。三九已至,卻和暖如春矛辕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背付魔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工聊品, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人几苍。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓翻屈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親妻坝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伸眶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一、Set接口的特點(diǎn) 使用HashSet存儲(chǔ)字符串并遍歷 Set set = new HashSet ()刽宪;//...
    啦啦啦_9a5f閱讀 218評(píng)論 0 2
  • Map Js中的Object厘贼,本質(zhì)上是鍵值對(duì)的集合,但是只能夠用字符串作為key圣拄,為解決這個(gè)問(wèn)題嘴秸,因此ES6中提供...
    努力與幸運(yùn)閱讀 208評(píng)論 0 0
  • Set 和 Map 主要的應(yīng)用場(chǎng)景在于數(shù)據(jù)重組和數(shù)據(jù)儲(chǔ)存 Set 是一種叫做集合的數(shù)據(jù)結(jié)構(gòu),Map 是一種叫做字典...
    lllhy閱讀 919評(píng)論 0 0
  • 本文轉(zhuǎn)自博客:Set串述、WeakSet执解、Map及WeakMap Set 和 Map 主要的應(yīng)用場(chǎng)景在于 數(shù)據(jù)重組 和...
    許小花花閱讀 311評(píng)論 0 0
  • 昨天,利用差不多十來(lái)小時(shí)纲酗,閱讀路遙的作品《平凡的世界》衰腌。這本書(shū)原本以為早已看過(guò),卻在看完后耕姊,發(fā)現(xiàn)我看的卻是另...
    言默默閱讀 127評(píng)論 0 0