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];
}
}