【前端數據結構基本】字典

媒介

字典是一種以鍵-值對情勢存儲數據的數據構造,犹如手機通訊錄中,想要尋覓一個電話時,只需找到名字就能夠找到其電話號碼。
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]])
  }
}

个中有幾點個人認為須要強調:

  1. 我們想要刪除鍵-值對時須要運用JavaScript中的內置函數——delete。該函數運用對鍵的援用作為參數,同時刪除鍵與其關聯的值。
  2. 我們運用Object類keys()要領能夠返回傳入參數中存儲的一切鍵。(Object.keys()for...in輪迴的區分重要在於for...in輪迴會羅列其原型鏈上的屬性)
  3. slice()要領是從已有的數組中返回選定的元素
  4. 當我們在盤算字典中元素的個數時,並沒有直接運用length要領,因為當鍵的範例為字符串時,length屬性沒法運用

結束語

運用JavaScript完成字典數據構造相對來說難度不大,但我們須要注重个中的一些細節部份。

參考資料:數據構造與算法JavaScript形貌 第7章 字典

因為書上的源代碼湧現了毛病,因而代碼依據現實運轉效果做了響應修正。

    原文作者:Miyang
    原文地址: https://segmentfault.com/a/1190000015196392
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞