js 中 Map/Set 集合

來源:互聯網
上載者:User

標籤:不同   style   asc   多次   var   array   color   需要   val   

Map

Map是一組索引值對的結構,具有極快的尋找速度。

舉個例子,假設要根據同學的名字尋找對應的成績,如果用Array實現,需要兩個Array: 

1 var names = [‘Michael‘, ‘Bob‘, ‘Tracy‘];2 var scores = [95, 75, 85]; 

給定一個名字,要尋找對應的成績,就先要在names中找到對應的位置,再從scores取出對應的成績,Array越長,耗時越長。

如果用Map實現,只需要一個“名字”-“成績”的對照表,直接根據名字尋找成績,無論這個表有多大,尋找速度都不會變慢。用JavaScript寫一個Map如下: 

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

初始化Map需要一個二維數組,或者直接初始化一個空MapMap具有以下方法: 

1 var m = new Map(); // 空Map2 m.set(‘Adam‘, 67); // 添加新的key-value3 m.set(‘Bob‘, 59);4 m.has(‘Adam‘); // 是否存在key ‘Adam‘: true5 m.get(‘Adam‘); // 676 m.delete(‘Adam‘); // 刪除key ‘Adam‘7 m.get(‘Adam‘); // undefined 

由於一個key只能對應一個value,所以,多次對一個key放入value,後面的值會把前面的值衝掉:

1 var m = new Map();2 m.set(‘Adam‘, 67);3 m.set(‘Adam‘, 88);4 m.get(‘Adam‘); // 88 
Set

SetMap類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在Set中,沒有重複的key。

要建立一個Set,需要提供一個Array作為輸入,或者直接建立一個空Set: 

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

重複元素在Set中自動被過濾: 

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

注意數字3和字串‘3‘是不同的元素。

通過add(key)方法可以添加元素到Set中,可以重複添加,但不會有效果: 

>>> s.add(4)>>> s{1, 2, 3, 4}>>> s.add(4)>>> s{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} 

 

js 中 Map/Set 集合

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.