網上的相關教程非常多,基礎知識自行搜尋即可。
習題主要選自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( )
——清空資料
課後習題(書中第七節習題)
- 寫一個程式,該程式從文字讀入名字和電話號碼,然後將其存入一個字典,程式包含如下功能:顯示單個電話號碼,顯示所有電話號碼,增加新的電話號,刪除電話,清空所有電話。
- 使用
Dictionary
類寫一個程式,用來統計一段文字中各個單詞出現的次數。例如,”the brown for jumped over the blue fox”,對應的輸出為:
the:2
brown:1
fox:2
jumped:1
over:1
blue:1
- 修改練習2,使單詞按字母順序顯示。