溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

野生前端的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)練習(xí)(4)——字典

發(fā)布時(shí)間:2020-07-16 22:52:01 來源:網(wǎng)絡(luò) 閱讀:351 作者:大史不說話 欄目:開發(fā)技術(shù)

野生前端的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)練習(xí)(4)——字典

網(wǎng)上的相關(guān)教程非常多,基礎(chǔ)知識(shí)自行搜索即可。

習(xí)題主要選自O(shè)relly出版的《數(shù)據(jù)結(jié)構(gòu)與算法javascript描述》一書。

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

字典的基本知識(shí)

鍵值對(duì)形式存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),在Javascript中更多地是直接使用對(duì)象,一般只在有排序需求的場(chǎng)景下會(huì)用到本篇中構(gòu)造的Dictionary類,因?yàn)閷?duì)象屬性是無序的。

字典的應(yīng)用

字典在Javascript中是非常常用的技術(shù)之一,一般會(huì)和設(shè)計(jì)模式中的策略模式一起被提及。策略模式指的是定義一系列的算法,把它們一個(gè)個(gè)封裝起來。將不變的部分和變化的部分隔開是每個(gè)設(shè)計(jì)模式的主題,策略模式也不例外,策略模式的目的就是將算法的使用與算法的實(shí)現(xiàn)分離開來。例如下面一段計(jì)算薪水和獎(jiǎng)金的示例:

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

基本練習(xí)

構(gòu)造一個(gè)Dictionary類。實(shí)現(xiàn)下列基本方法

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

課后習(xí)題(書中第七節(jié)習(xí)題)

  1. 寫一個(gè)程序,該程序從文本讀入名字和電話號(hào)碼,然后將其存入一個(gè)字典,程序包含如下功能:顯示單個(gè)電話號(hào)碼,顯示所有電話號(hào)碼,增加新的電話號(hào),刪除電話,清空所有電話。
  2. 使用Dictionary類寫一個(gè)程序,用來統(tǒng)計(jì)一段文本中各個(gè)單詞出現(xiàn)的次數(shù)。例如,"the brown for jumped over the blue fox",對(duì)應(yīng)的輸出為:
the:2
brown:1
fox:2
jumped:1
over:1
blue:1
  1. 修改練習(xí)2,使單詞按字母順序顯示。
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI