媒介
字典是一種以鍵-值對情勢存儲數據的數據構造,犹如手機通訊錄中,想要尋覓一個電話時,只需找到名字就能夠找到其電話號碼。
JavaScript的Object類
就是以字典的情勢設想的。這裏將運用Object類
的特徵,完成一個Dictionary類
,讓字典範例的對象運用起來越發簡樸。
一、組織字典數據構造
我們將運用JavaScript完成字典構造,各部份功用運用解釋申明。
/**
* Dictionary 組織要領
* datastore 存儲數據
*/
function Dictionary () {
this.datastore = new Array()
this.add = add
this.find = find
this.remove = remove
this.showAll = showAll
this.count = count
this.clear = clear
this.showAllBySort = showAllBySort
}
/**
* add() 要領舉行增加數據
* @param {*} key
* @param {*} value
*/
function add (key, value) {
this.datastore[key] = value
}
/**
* find() 要領舉行查找key值對應的value
* @param {*} key
*/
function find (key) {
return this.datastore[key]
}
/**
* remove() 要領舉行刪除對應的key值鍵值對
* @param {*} key
*/
function remove(key) {
delete this.datastore[key]
}
/**
* showAll() 要領舉行遍歷顯現一切的key、value
*/
function showAll () {
let datakeys = Array.prototype.slice.call(Object.keys(this.datastore))
for (let key in datakeys) {
console.log(datakeys[key] + ' -> ' + this.datastore[datakeys[key]])
}
}
/**
* showAllBySort() 要領舉行遍歷顯現一切排序后的key、value
*/
function showAllBySort () {
let datakeys = Array.prototype.slice.call(Object.keys(this.datastore)).sort()
for (let key in datakeys) {
console.log(datakeys[key] + ' -> ' + this.datastore[datakeys[key]])
}
}
个中有幾點個人認為須要強調:
- 我們想要刪除鍵-值對時須要運用JavaScript中的內置函數——
delete
。該函數運用對鍵的援用作為參數,同時刪除鍵與其關聯的值。 - 我們運用
Object類
的keys()
要領能夠返回傳入參數中存儲的一切鍵。(Object.keys()
與for...in
輪迴的區分重要在於for...in
輪迴會羅列其原型鏈上的屬性) -
slice()
要領是從已有的數組中返回選定的元素 - 當我們在盤算字典中元素的個數時,並沒有直接運用
length
要領,因為當鍵的範例為字符串時,length
屬性沒法運用
結束語
運用JavaScript完成字典數據構造相對來說難度不大,但我們須要注重个中的一些細節部份。
參考資料:數據構造與算法JavaScript形貌 第7章 字典
因為書上的源代碼湧現了毛病,因而代碼依據現實運轉效果做了響應修正。