野生前端的數據結構基礎練習(4)——字典

来源:https://www.cnblogs.com/dashnowords/archive/2018/10/30/9880013.html
-Advertisement-
Play Games

網上的相關教程非常多,基礎知識自行搜索即可。 習題主要選自Orelly出版的《數據結構與演算法javascript描述》一書。 參考代碼可見: "https://github.com/dashnowords/blogs/tree/master/Structure/Dictionary" 字典的基本知識 ...


網上的相關教程非常多,基礎知識自行搜索即可。

習題主要選自Orelly出版的《數據結構與演算法javascript描述》一書。

參考代碼可見:https://github.com/dashnowords/blogs/tree/master/Structure/Dictionary

字典的基本知識

鍵值對形式存儲數據的數據結構,在Javascript中更多地是直接使用對象,一般只在有排序需求的場景下會用到本篇中構造的Dictionary類,因為對象屬性是無序的。

字典的應用

字典在Javascript中是非常常用的技術之一,一般會和設計模式中的策略模式一起被提及。策略模式指的是定義一系列的演算法,把它們一個個封裝起來。將不變的部分和變化的部分隔開是每個設計模式的主題,策略模式也不例外,策略模式的目的就是將演算法的使用與演算法的實現分離開來。例如下麵一段計算薪水和獎金的示例:

var obj = {
        "A": function(salary) {
            return salary * 4;
        },
        "B" : function(salary) {
            return salary * 3;
        },
        "C" : function(salary) {
            return salary * 2;
        } 
};
var calculateBouns =function(level,salary) {
    return obj[level](salary);
};
console.log(calculateBouns('A',10000)); // 40000

基本練習

構造一個Dictionary類。實現下列基本方法

  • add(key, value)——添加一條記錄
  • find(key)——查找指定鍵對應的值
  • remove(key)——移除指定鍵值對
  • showAll( )——顯示所有鍵值對
  • clear( )——清空數據

課後習題(書中第七節習題)

  1. 寫一個程式,該程式從文本讀入名字和電話號碼,然後將其存入一個字典,程式包含如下功能:顯示單個電話號碼,顯示所有電話號碼,增加新的電話號,刪除電話,清空所有電話。
  2. 使用Dictionary類寫一個程式,用來統計一段文本中各個單詞出現的次數。例如,"the brown for jumped over the blue fox",對應的輸出為:
the:2
brown:1
fox:2
jumped:1
over:1
blue:1
  1. 修改練習2,使單詞按字母順序顯示。

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

-Advertisement-
Play Games
更多相關文章
  • 刪除視圖註意事項 刪除視圖時,將從系統目錄中刪除視圖的定義和有關視圖的其他信息。 還將刪除視圖的所有許可權。 使用 DROP TABLE 刪除的表上的任何視圖都必須使用 DROP VIEW 顯式刪除。 對索引視圖執行 DROP VIEW 時,將自動刪除視圖上的所有索引。 若要顯示視圖上的所有索引,請使 ...
  • 通過視圖增刪改數據註意事項 需要對目標表的 UPDATE、INSERT 或 DELETE 許可權(取決於執行的操作)。 如果視圖引用多個基表,則不能刪除行。 如果視圖引用多個基表,只能更新屬於單個基表的列。 如果視圖引用多個基表,則不能插入行。 使用SSMS資料庫管理工具通過視圖增刪改數據 1、連接數 ...
  • SqlServer主鍵和自增長設置 Intro 有時候有些 sql 語句有些不太記得了,謹以此文備忘。 設置主鍵以及自增長可分兩種情況: 1. 新創建表 2. 表已創建但是沒有設置主鍵和自增長 新創建表 創建表 sql: 其中 用來表明 欄位是主鍵,而 則為 欄位設置自增長,且從1開始,每次自增1 ...
  • 列表標簽 比如現在顯示這樣的效果 山水集團 財務部 學工部 人事部 <dl></dl> : 表示列表的範圍 在dl裡面 <dt></dt>:上層內容(沒有縮進) 在dl裡面 <dd></dd>: 下層內容(有縮進) 代碼: 想要在頁面上顯示這樣的內容(有序列表) 1.財務部 2.學工部 3.人事部 ...
  • 文字標簽:修改文字的樣式 <font></font> 屬性: size:文字的大小 取值範圍 1-7,超出了7,預設還是7 color:文字顏色 兩種表示方法 英文單詞:red、green、blue、black、white、yellow、gray 使用十六進位數表示 #ffffff : GRB 註釋 ...
  • 一、什麼是HTML? HypeText Markup Language:超文本標記語言,網頁語言 超文本:超出文本的範疇,使用HTML可以輕鬆實現這樣的操作 標記:HTML所有的操作都是通過標記實現的,標記就是標簽,<標簽名稱> 二、HTML的規範(遵循) 1、一個HTML文件開始標簽和結束標簽<h ...
  • 淺談小程式中的請求封裝 近兩個月學習了小程式的開發,並且擼了一個不大不小的demo,算是正式入門了小程式,在此想分享下小程式的開發經驗。 前言 在小程式的開發中,或者說在整個前端開發中,請求都是繞不過去的一道坎。在Vue開發中,我們可以採用 "axios" 這個成熟的插件來進行HTTP請求。但是,遺 ...
  • 熟悉 Vue 的都知道 方法methods、計算屬性computed、觀察者watcher 在 Vue 中有著非常重要的作用,有些時候我們實現一個功能的時候可以使用它們中任何一個都是可以的,但是它們之間又存在一些不同之處,每一個都有一些適合自己的場景,我們要想知道合適的場景,肯定先對它們有一個清楚的 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...