国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解ES6中的Map與Set集合

2024-05-06 15:41:30
字體:
來源:轉載
供稿:網友

集合的概念以及和數組的區別

其實數組也是集合, 只不過數組的索引是數值類型.當想用非數值類型作為索引時, 數組就無法滿足需要了.

而 Map 集合可以保存多個鍵-值對(key-value),  Set 集合可以保存多個元素.

對Map 和 Set 一般不會逐一遍歷其中的元素. Map 一般用來存儲需要頻繁取用的數據,  Set 一般用來判斷某個值是否存在其中.

ES 5 中對 Map 和 Set 的模擬方法

在ES 5 中,沒有 Set和Map集合, 一般使用對象來模擬這兩種集合, 對象的屬性作為鍵(key),  以屬性值作為值(value),  即以 property: property-value 來模擬 key-value 的形式. 具體實現如下:

模擬 Map 的鍵值對集合:

// 創建一個 Map 對象var map = Object.create(null);// 添加屬性和屬性值, 即 添加 key 和 valuemap.key1 = 'value 1';map.key2 = {};// 取得 key 對應的 value console.log(map.key1); // "value 1"console.log(map.key2); // "Object {}"

模擬 Set :

// 創建一個 Set 對象var set = Object.create(null);// 添加屬性和屬性值, 即 添加 key 并令其值為 true, 即表示這個key存在于集合中set.key = true;// 判斷 key 是否存在, 然后進行下一步的操作if(set.key) { ... }

用對象模擬這兩種集合的缺陷

由于對象中的屬性名必須是字符串, 如果傳入的不是字符串則會強制轉換成對應的字符串類型

一般使用 if 語句來判斷一個 key 是否存在于集合中,  當這個 key 對應的 value 為 false 或者可以被強制轉換為 false 時,  則 if 語句認為這個key不存在.但是其實是存在的, 只不過 value = false 而已.

ES6 中的 Map 和 Set 集合

下面正式來討論這兩種集合的特點

Map

Map 中存儲的是 key-value 形式的鍵值對,  其中的 key 和 value 可以是任何類型的,  即對象也可以作為 key . 這比用對象來模擬的方式就靈活了很多

Map 的創建和初始化

可以用new Map()構造函數來創建一個空的 Map

// 創建一個空的 Map let map = new Map();

也可以在 Map() 構造函數中傳入一個數組來創建并初始化一個 Map. 傳入的數組是二維數組, 其中的每一個子數組都有兩個元素,  前者會被作為 key,  后者會被作為 value,  這樣就形成了一個 key-value 鍵值對. 例如:

// 用數組來創建一個 非空的 Map let array = [ // 定義一個二維數組, 數組中的每子都有兩個元素  ['key1' , 'value 1'],  // key 是 字符串 "key1", value 是字符串 "value 1"  [{} , 10086] ,     // key 是個對象, value 是數值 10086  [ 5, {} ]       // key 是個數值類型, value 是對象];let map = new Map(array); // 將數組傳入 Map 構造函數中            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 颍上县| 金塔县| 苍山县| 太仆寺旗| 三河市| 临沂市| 延长县| 永昌县| 来宾市| 清苑县| 龙川县| 墨脱县| 廉江市| 库尔勒市| 久治县| 万荣县| 邛崃市| 昔阳县| 东兰县| 诸暨市| 东明县| 洛宁县| 财经| 余庆县| 理塘县| 信宜市| 贺兰县| 上思县| 杭州市| 乌拉特前旗| 桃江县| 永清县| 瑞金市| 石渠县| 久治县| 萨嘎县| 砚山县| 犍为县| 茶陵县| 土默特右旗| 永州市|