JS數據結構與算法--字典

1.字典是一種以-值對形式存儲數據的數據結構,(如,電話號碼薄裏面的名字和電話號碼,要找一個電話時,先找名字。)這裏的鍵是指你用來查找的東西,值就是你查找到的結果。

2.Dictionary 類的基礎是Array類,而不是Object類。

開始定義Dictionary 類:

      function Dictionary (){

       this.datastore=new Array();

            }

先定義add()方法,該方法接受兩個參數:鍵和值。鍵是值在字典中的索引,代碼如下:

        function add (key){

              this.datastore[key]=value;

            }

接下來定義find()方法,該方法以鍵作爲參數,返回和其關聯的值。代碼如下:

        function find (key){

              return this.datastore[key];

            }

從字典中刪除鍵-值對需要使用delete。該函數同時刪除鍵和與其關聯的值。代碼:

            function remove (key){

              delete  this.datastore[key];

            }

最後,顯示字典中所有的鍵-值對:

              function showAll(){

 for(var key in Object.keys(this.database)){

 print(key + "->" + this.datastore[key]);

 }

 }

測試:

var pbook= new Dictionary ();

pbook.add("Mike","123");

pbook.add("David","345");

pbook.add("Cynthia","456");

print(pbook.find("David"));

pbook.remove("David");

pbook.showAll();

2  Dictionary 類的輔助方法

定義字典中的元素個數函數

    function count(){

 var n=0;

 for(var key in Object.keys(this.datastore)){

 ++n;

 }

 return n;

 }

爲什麼不用length屬性呢,因爲當鍵的類型爲字符串時,length屬性就不管用啦。

Clear()是另外一個輔助函數


function clear(key){

 for each(var key in Object.keys(this.datastore)){

 delete  this.datastore[key];

 }

 }

3 Dictionary類添加排序功能

字典的主要用途是通過鍵取值,我們無須太關心數據在字典中的實際存儲順序,然而,很多人都希望看到一個有序的字典。

只要重新定義showAll()方法:

function showAll(){

 for(var key in Object.keys(this.database).sort()){

 print(key + "->" + this.datastore[key]);

 }

 }

該定義和之前的唯一區別是:從數組datastore拿到鍵後,調用sort()方法對鍵值重新排序

 

Dictionary.js

function Dictionary (){

              this.datastore=new Array();

            }

 function add (key){

              this.datastore[key]=value;

            }

 function find (key){

              return this.datastore[key];

            }

 function remove (key){

              delete  this.datastore[key];

            }

 function showAll(){

 for(var key in Object.keys(this.database).sort()){

 print(key + "->" + this.datastore[key]);

 }

 }

 function count(){

 var n=0;

 for(var key in Object.keys(this.datastore)){

 ++n;

 }

 return n;

 }

             function clear(key){

 for each(var key in Object.keys(this.datastore)){

 delete  this.datastore[key];

 }

 }

 

 

發佈了32 篇原創文章 · 獲贊 9 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章