成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【前端數(shù)據(jù)結構基礎】字典

Acceml / 2473人閱讀

摘要:一構造字典數(shù)據(jù)結構我們將使用實現(xiàn)字典結構,各部分功能使用注釋說明。參考資料數(shù)據(jù)結構與算法描述第章字典由于書上的源代碼出現(xiàn)了錯誤,因此代碼根據(jù)實際運行結果做了相應修改。

前言

字典是一種以鍵-值對形式存儲數(shù)據(jù)的數(shù)據(jù)結構,如同手機通訊錄中,想要尋找一個電話時,只要找到名字就可以找到其電話號碼。
JavaScript的Object類就是以字典的形式設計的。這里將使用Object類的特性,實現(xiàn)一個Dictionary類,讓字典類型的對象使用起來更加簡單。

一、構造字典數(shù)據(jù)結構

我們將使用JavaScript實現(xiàn)字典結構,各部分功能使用注釋說明。

/**
 * Dictionary 構造方法
 * datastore 存儲數(shù)據(jù)
 */
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() 方法進行添加數(shù)據(jù)
 * @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]])
  }
}

其中有幾點個人認為需要強調(diào):

我們想要刪除鍵-值對時需要使用JavaScript中的內(nèi)置函數(shù)——delete。該函數(shù)使用對鍵的引用作為參數(shù),同時刪除鍵與其關聯(lián)的值。

我們使用Object類keys()方法可以返回傳入?yún)?shù)中存儲的所有鍵。(Object.keys()for...in循環(huán)的區(qū)別主要在于for...in循環(huán)會枚舉其原型鏈上的屬性)

slice()方法是從已有的數(shù)組中返回選定的元素

當我們在計算字典中元素的個數(shù)時,并沒有直接使用length方法,因為當鍵的類型為字符串時,length屬性無法使用

結束語

使用JavaScript實現(xiàn)字典數(shù)據(jù)結構相對來說難度不大,但我們需要注意其中的一些細節(jié)部分。

參考資料:數(shù)據(jù)結構與算法JavaScript描述 第7章 字典
由于書上的源代碼出現(xiàn)了錯誤,因此代碼根據(jù)實際運行結果做了相應修改。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/107986.html

相關文章

  • 簡析前端學習python3的基礎

    摘要:元組是靜態(tài)數(shù)組,它們不可變,且其內(nèi)部數(shù)據(jù)一旦創(chuàng)建便無法改變。元組緩存于運行時環(huán)境,這意味著我們每次使用元組時無須訪問內(nèi)核去分配內(nèi)存。 以下是整理的JavaScript和python的基礎區(qū)別的整理: 字符串、列表、元組、字典、集合、函數(shù) 字符串 聲明一個字符串 python str = 123 str = 123 Tips: 如果是三個引號的話,那么在py中就是注釋的意思 ...

    summerpxy 評論0 收藏0
  • 簡析前端學習python3的基礎

    摘要:元組是靜態(tài)數(shù)組,它們不可變,且其內(nèi)部數(shù)據(jù)一旦創(chuàng)建便無法改變。元組緩存于運行時環(huán)境,這意味著我們每次使用元組時無須訪問內(nèi)核去分配內(nèi)存。 以下是整理的JavaScript和python的基礎區(qū)別的整理: 字符串、列表、元組、字典、集合、函數(shù) 字符串 聲明一個字符串 python str = 123 str = 123 Tips: 如果是三個引號的話,那么在py中就是注釋的意思 ...

    LiveVideoStack 評論0 收藏0
  • 前端中常見數(shù)據(jù)結構小結

    摘要:下列將筆者涉獵到的與前端相關的數(shù)據(jù)結構案例作如下總結數(shù)據(jù)結構案例棧其它數(shù)據(jù)結構的基礎,中間件機制隊列其它數(shù)據(jù)結構的基礎鏈表中的的優(yōu)化集合對應中的字典對應中的哈希表一種特殊的字典,可以用來存儲加密數(shù)據(jù)樹圖暫時沒遇到,不過里面的蠻常見 showImg(https://segmentfault.com/img/remote/1460000016060996?w=640&h=280); 常見數(shù)...

    suemi 評論0 收藏0
  • 30歲零基礎自學編程,先學哪種語言最好?

    摘要:大學,光學工程研究生畢業(yè),和程序猿完全不搭邊。那怎么辦,試著學一學唄,學習才是程序猿的天性。所以我在想程序猿是不是都需要新知識刺激一下,才能保持興奮的頭腦。有句話說的很對程序猿就像好奇的貓,追著毛球的線頭玩,最后一個毛球在腦袋里攪漿糊。 說說我自己的經(jīng)歷。211大學,光學工程研究生畢業(yè),和程序猿完全不搭邊。 畢業(yè)后進了成都某國字頭研究所,在行業(yè)里摸爬滾打了四年,2018年機緣巧合在家養(yǎng)...

    xietao3 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<