es6筆記(5)Map數據結構

来源:https://www.cnblogs.com/mcad/archive/2018/02/07/8426037.html
-Advertisement-
Play Games

概要 字典是用來存儲不重覆key的Hash結構。不同於集合(Set)的一點,字典使用的是[key,value]的形式來存儲數據。 JavaScript的對象(Object:{})只能用字元串當做key。使用起來有一定限制。 為瞭解決這個問題,ES6提供的Map數據結構。它類似與對象,也是[key,v ...


概要

字典是用來存儲不重覆key的Hash結構。不同於集合(Set)的一點,字典使用的是[key,value]的形式來存儲數據。

JavaScript的對象(Object:{})只能用字元串當做key。使用起來有一定限制。
為瞭解決這個問題,ES6提供的Map數據結構。它類似與對象,也是[key,value]的集合,但是key的範圍不限於字元串,各種類型的值(包括對象)都可以當做key。


也就是說Object結構提供了 “字元串--值”的對應;
Map提供了“值--值”的對應,是一種完善的Hash結構的實現。
如果需要使用鍵值對的數據結構,Map比Object更合適。

//對於Object只能使用字元串作為key這一點,例如一下代碼。

var obj = {},
    key1={b:22},
    key2={c:33};

obj[key1] = 1;
obj[key2] = 2;

//此時key1,key2都會被轉成字元串“[object Object]”
console.log(obj);  //Object{[object Object] : 2} 

使用

1 創建一個Map

const map = new Map([
    ['a',1],['b',2]
]);

console.log(map); // {"a" => 1, "b" => 2}

2 Map 類的屬性

console.log(map.size); //字典長度

3 Map 類的方法

set(key,value)

設置一個鍵值對,然後返回整個Map結構。如果Key已經有值,則鍵值被更新,否則生成該鍵。
map裡面的key的排序順序是按照添加的順序排列的。

map.set('jd','www.jd.com')
   .set('baidu','www.baidu.com');

console.log(map);

get(key)

讀取key對應的鍵值,如果找不到key,返回undefined。

console.log(map.get('jd'));  //wwww.jd.com
console.log(map.get('x'));   //undefined

delete(key)

刪除某個鍵,成功返回true,失敗返回false。

console.log(map.delete('baidu')); // true
console.log(map.delete('baidu')); // false

has(key)

判斷某個key是否在map中存在,返回一個布爾值。

console.log(map.has('jd')) //true

clear()

清除所有數據,無返回值

map.clear();
console.log(map);  // Map(0) {}

keys()

返回鍵名的遍歷器

const map = new Map([
    ['jd','www.jd.com'],
    ['baidu','www.baidu.com']
]);
console.log(map.keys());   // MapIterator {"baidu","jd"}

values()

返回鍵值的遍歷器

console.log(map.values());   // MapIterator {"www.baidu.com","www.jd.com"}

entries

返回鍵值對的遍歷器

console.log(map.entries());   // MapIterator {['jd','www.jd.com'],['baidu','www.baidu.com']}

forEach()

使用回調函數遍歷每個成員

map.forEach(function(key,value,map){
    console.log(key + ':' + value); // baidu:www.baidu.com
})

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近學習vue時看到了let,const變數定義,查閱相關資料整理了一下,所以就總結下加深印象,js中三種變數方式var、const、let的區別 1.var定義的變數是可以修改,如果不初始化會輸出undefined,不會報錯。 2.const定義變數不可修改,而且必須初始化,const聲明一個只讀 ...
  • 前段時間開發中,遇到一個父元素和子元素都有事件時,發現會出現事件冒泡現象,雖然知道ev.stopPropagation()和ev.stopPropagation()其中一個是阻止事件冒泡,卻不知ev.preventDefault()和ev.stopPropagation()以及return fals ...
  • /* 定義替換對象鍵值 */var setReferArgs = function(){ var referArgs = new Object(); referArgs['#userID\#'] = userId; referArgs['\#userName\#'] = userName; retu ...
  • 形狀 一 自適應的橢圓 1.難題 1> 圓 你可能註意到過, 給任何正方形元素設置一個足夠大的border-radius, 就可以把它變成一個圓形。所用到的CSS 代碼如下所示: *當任意兩個相鄰圓角的半徑之和超過border box 的尺寸時,用戶 代理必須按比例減小各個邊框半徑所使用的值,直到它 ...
  • 今天學習了tab選項卡切換。 js代碼: 1 <script> 2 var lis = document.querySelectorAll("#tab-title li"); 3 var i = 0, len = lis.length; 4 for (; i < len; i++){ 5 var l ...
  • 一、語法 transition: property duration timing-function delay transition屬性是個複合屬性,她包括以下幾個子屬性: transition-property :規定設置過渡效果的css屬性名稱 transition-duration :規定完 ...
  • 1:定義:javascript是一種弱類型、動態類型、解釋型的腳本語言。 弱類型:類型檢查不嚴格,偏向於容忍隱式類型轉換。 強類型:類型檢查嚴格,偏向於不容忍隱式類型轉換。 動態類型:運行的時候執行類型檢查。 靜態類型:編譯的時候就知道每個變數的類型。 解釋型:程式不需要編譯,程式在運行的時候才翻譯 ...
  • 本文最初發表於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 CSS3介紹 CSS3在CSS2基礎上, 增強 或 新增 了許多特性, 彌補了CSS2的眾多不足之處,使得Web開發變得更為高效和便捷。 CSS3的現狀 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...