成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

【前端數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)】字典

Acceml / 2498人閱讀

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

前言

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

一、構(gòu)造字典數(shù)據(jù)結(jié)構(gòu)

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

/**
 * Dictionary 構(gòu)造方法
 * 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() 方法進(jìn)行添加數(shù)據(jù)
 * @param {*} key
 * @param {*} value
 */
function add (key, value) {
  this.datastore[key] = value
}

/**
 * find() 方法進(jìn)行查找key值對應(yīng)的value
 * @param {*} key
 */
function find (key) {
  return this.datastore[key]
}

/**
 * remove() 方法進(jìn)行刪除對應(yīng)的key值鍵值對
 * @param {*} key
 */
function remove(key) {
  delete this.datastore[key]
}

/**
 * showAll() 方法進(jìn)行遍歷顯示所有的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() 方法進(jìn)行遍歷顯示所有排序后的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]])
  }
}

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

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

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

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

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

結(jié)束語

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

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/107986.html

相關(guān)文章

  • 簡析前端學(xué)習(xí)python3的基礎(chǔ)

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

    summerpxy 評論0 收藏0
  • 簡析前端學(xué)習(xí)python3的基礎(chǔ)

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

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

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

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

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

    xietao3 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<