国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

在Javascript中實(shí)現(xiàn)偽哈希表

開發(fā) 前端
哈希表在代碼中使用頻率很高,靈活使用哈希表可以簡化代碼并提供諸多方便,本文通過實(shí)例講解在Javascript中實(shí)現(xiàn)偽哈希表

了解數(shù)據(jù)結(jié)構(gòu)的人應(yīng)該都聽說過哈希表這種數(shù)據(jù)結(jié)構(gòu),它是一種典型的利用鍵值對(duì)存儲(chǔ)并檢索數(shù)據(jù)的一種非線性結(jié)構(gòu),又稱散列表或雜湊法。在一般的線性表結(jié)構(gòu)中,數(shù)據(jù)的相對(duì)位置是隨機(jī)的,即數(shù)據(jù)和用于檢索的關(guān)鍵字之間不存在確定的關(guān)系,檢索數(shù)據(jù)時(shí)往往需要進(jìn)行一系列的比較,最終找到要檢索的數(shù)據(jù),這種方法往往建立在循環(huán)比較的機(jī)制上,利用時(shí)間的代價(jià)節(jié)省了空間,實(shí)現(xiàn)了數(shù)據(jù)的存儲(chǔ)和檢索功能。而哈希表則使用鍵值對(duì)進(jìn)行數(shù)據(jù)的存儲(chǔ),在數(shù)據(jù)的存儲(chǔ)位置和它的關(guān)鍵字之間建立了一一對(duì)應(yīng)的關(guān)系,從而使每個(gè)關(guān)鍵字和結(jié)構(gòu)中的一個(gè)***的存儲(chǔ)位置相對(duì)應(yīng),所以在檢索數(shù)據(jù)時(shí),只需要根據(jù)這個(gè)對(duì)應(yīng)關(guān)系便可快速定位到要查找的數(shù)據(jù)。

事實(shí)上,我們通常并不關(guān)心數(shù)據(jù)是如何存儲(chǔ)的,而關(guān)心的是我們在使用數(shù)據(jù)的時(shí)候是否方便,例如對(duì)數(shù)據(jù)進(jìn)行排序、查找、替換等操作,由于這種操作是貫穿在整個(gè)應(yīng)用程序始終的,因此對(duì)效率的要求也就很高了。一般的高級(jí)語言,如C和C的變種,都提供了用于存儲(chǔ)哈希表的數(shù)據(jù)結(jié)構(gòu),但在弱類型語言中,如javascript等腳本語言,本身并沒有直接提供類似于哈希表的這種結(jié)構(gòu),不過我們可以從數(shù)組出發(fā),按照哈希表的原理自己打造一個(gè)腳本語言專有的哈希表數(shù)據(jù)結(jié)構(gòu)。

我們知道,在數(shù)據(jù)中,可以通過下標(biāo)直接定位到相應(yīng)數(shù)據(jù),也就是用于存儲(chǔ)數(shù)據(jù)的空間,數(shù)組的這種特性本身就決定了它可以被用來實(shí)現(xiàn)哈希算法,不過在C語言中,數(shù)組的下標(biāo)只能是從0開始的整數(shù),而不能為其它類型的數(shù)據(jù),但在javascript中,我們可以借用“對(duì)象”這個(gè)概念,按照數(shù)組的特性來模擬哈希算法。因?yàn)樵趈avascript中,對(duì)象其實(shí)就是屬性或方法的一個(gè)集合,于是我們可以構(gòu)造一個(gè)Hashtable對(duì)象,它有key和value兩個(gè)屬性,自己編寫代碼來模擬一個(gè)完整的哈希表。下面是一段在javascript中實(shí)現(xiàn)哈希表的代碼:

1 function Hashtable() 
2 {
3   this._hash = {};
4   this._count = 0;
5   this.add = function(key, value) 
6   {
7       if (this._hash.hasOwnProperty(key)) return false;
8       else { this._hash[key] = value; this._count++; return true; }
9   }
10   this.remove = function(key) { delete this._hash[key]; this._count--; }
11   this.count = function() { return this._count; }
12   this.items = function(key) { if (this.contains(key)) return this._hash[key]; }
13   this.contains = function(key) { return this._hash.hasOwnProperty(key); }
14   this.clear = function() { this._hash = {}; this._count = 0; }
15 }

實(shí)現(xiàn)起來很簡單,我們在function中定義了一個(gè)_hash對(duì)象,該對(duì)象有一個(gè)屬性key,我們可以給這個(gè)屬性賦值,hasOwnProperty方法是javascript提供的方法,用于返回指定的對(duì)象中是否包含某個(gè)屬性。同時(shí)我們在該function中還定義了一個(gè)_count對(duì)象,用于記錄Hashtable中的數(shù)據(jù)個(gè)數(shù),因?yàn)槲覀儾幌朊看潍@取Hashtable中的數(shù)據(jù)個(gè)數(shù)時(shí)都要通過一個(gè)內(nèi)置的循環(huán)來計(jì)數(shù),這樣開銷就會(huì)小一些,前面說了,哈希算法的一個(gè)基本特性就是效率高。delete語句在javascript中用于銷毀一個(gè)對(duì)象。

下面是使用該Hashtable的一些例子:

1 var hashCompany = new Hashtable();
 2
 3 //向Hashtable中添加鍵值對(duì)
 4 function FillData(arr) {
 5     hashCompany.clear();
 6
 7     for (var i = 0; i ﹤ arr.length - 1; i++) {
 8         if (arr[i] != "") {
 9             t = arr[i].split("`");
10             if (t.length ﹥ 2) {
11                 if (!hashCompany.contains(t[0].trim())) {
12                     hashCompany.add(t[0].trim(), t[1]);
13                 }
14             }
15         }
16     }
17 }
18
19 //遍歷Hashtable并取出值
20 function GetDataFromHash() {
21     var s;
22     if (hashCompany.count ﹥ 0) {
23         for (var i in hashCompany._hash) {
24             s += i + "|";
25         }
26     }
27
28     if (s.length ﹥ 0) {
29         s = s.substring(0, s.length - 2);
30     }
31
32     return s;
33 }
 

代碼比較簡單,這里就不再多加說明了,其中用到了一個(gè)trim函數(shù),下面補(bǔ)上。 

//采用正則表達(dá)式去除字符串兩端的空格,匿名函數(shù)用于擴(kuò)展String對(duì)象的方法
String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }

哈希表在代碼中使用頻率很高,靈活使用哈希表可以簡化代碼并提供諸多方便,尤其是在存儲(chǔ)類似于數(shù)組的數(shù)據(jù)并且希望之后能夠方便檢索。將代碼保存于此,以備日后使用。

【編輯推薦】

  1. JavaScript函數(shù)調(diào)用的四個(gè)規(guī)則
  2. Visual C# 2005中如何產(chǎn)生與比較哈希值
  3. Javascript中的replace方法與正則表達(dá)式講解
責(zé)任編輯:book05 來源: cnblogs
相關(guān)推薦

2023-11-24 17:58:03

Python哈希

2010-09-08 16:50:11

JavaScriptDOM操作

2009-04-09 15:40:01

JSONJavaScript枚舉

2020-07-09 07:43:13

JavaScript數(shù)據(jù)結(jié)構(gòu)技術(shù)

2011-05-25 14:22:01

oracle偽列偽表

2017-07-27 14:21:40

phpPHP源碼分析hashtable

2021-04-29 10:08:10

數(shù)據(jù)結(jié)構(gòu)哈希表

2016-12-21 10:35:55

PHP內(nèi)核PHP哈希表

2010-07-16 13:50:53

Perl哈希表

2010-07-16 13:10:36

Perl哈希表

2023-02-13 08:02:08

哈希函數(shù)哈希表搜索樹

2017-06-01 10:44:29

2010-07-13 16:34:34

Perl 哈希表

2024-10-16 11:03:30

Linux高性能編程

2023-03-24 09:07:22

SignalsJavaScript應(yīng)用

2021-06-03 10:00:47

JavaScript 前端數(shù)克隆對(duì)象

2009-06-24 09:52:21

哈希表

2024-11-07 08:47:53

2021-07-26 10:15:10

哈希字母異位詞

2009-08-20 17:17:02

C#哈希表
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

www.成人网| 国产亚洲精品bt天堂精选| 国产精品亲子伦av一区二区三区 | 日韩欧美中文字幕制服| 91精品国产高清| 影音先锋欧美在线| 日本伦理一区二区| 国产尤物视频在线| 美女扒开腿让男人桶爽久久动漫| 午夜av一区| 久久久久国产一区| 国产福利电影在线| 色妞ww精品视频7777| 国产剧情一区在线| 亚洲免费色视频| 日韩高清av在线| 岛国大片在线播放| 欧美日中文字幕| 亚洲图片欧美激情| 国产午夜一区二区| 97超碰青青草| 三级成人黄色影院| 丝瓜av网站精品一区二区 | 成熟老妇女视频| 丁香花在线影院| 欧美午夜不卡| 久久―日本道色综合久久| 国产精品毛片a∨一区二区三区|国| 91在线无精精品一区二区| 四虎国产精品成人免费影视| 欧美日韩一二三| 亚洲成人观看| 日韩欧美高清在线视频| 日本高清视频网站www| 国产日韩三级在线| 4kfree性满足欧美hd18| 亚洲男同性恋视频| 一级片在线观看| 91精品在线免费观看| av色综合久久天堂av色综合在| 欧美人动与zoxxxx乱| 性欧美ⅴideo另类hd| 精品国产乱码久久久久久图片 | 国产成人精品一区二区| jizz性欧美| 久久精品99久久久久久久久 | 欧美日韩激情在线| 小早川怜子影音先锋在线观看| 超薄丝袜一区二区| 国产精品传媒精东影业在线| 天堂资源在线亚洲视频| 欧美国产日韩亚洲一区| 中文有码在线观看| 中文字幕久热精品在线视频| 久久99国内| 中文字幕一区二区三区在线乱码 | 久久久人人人| 91亚洲va在线va天堂va国| 蜜桃精品视频在线观看| 99视频免费| 亚洲国产精品人人爽夜夜爽| 97久久综合区小说区图片区 | 亚洲网站视频| 国产日韩一区二区在线| 日韩欧美二区三区| 亚洲人成网站77777在线观看| 四虎影院一区二区三区| 亚洲精品第1页| 亚洲免费看片| 日韩一区免费观看| 欧美精品一卡二卡| 欧美韩国日本在线观看| 中文字幕在线综合| 色偷偷亚洲男人天堂| 亚洲永久字幕| 成人午夜两性视频| 国产精品视频久久一区| 国产在线黄色片| 色综合天天综合网国产成人网| 国产成人自拍网| 1区2区在线观看| 99在线看视频| 亚洲最大成人| 欧美日韩国产首页| 日韩国产一二三区| 日夜干在线视频| 国产二级片在线观看| 97超碰在线播放| 久久天天躁夜夜躁狠狠躁2022| 欧美日韩一级片在线观看| 成人教育av| 午夜激情在线| 97caopor国产在线视频| 日韩欧美在线观看一区二区| 黄色免费网址大全| 四虎影视永久免费在线观看一区二区三区 | 日韩欧美三级在线| 2019年精品视频自拍| 国产精品一区二区免费| 欧美日韩精品免费观看视频完整| 日本一区二区在线视频观看| 国产日韩欧美成人| 91精品久久久久久久久青青| 中文字幕亚洲精品乱码| 欧美精品123| 久久久久久久久国产精品| 午夜视频一区二区| 国产99精品视频| 欧美精品1区| 日韩高清在线观看一区二区| 涩涩在线视频| 成人免费高清在线播放| 男男gay免费网站| 久久久影院一区二区三区| 原创国产精品91| 777欧美精品| 国产精品久久二区二区| 老司机午夜免费精品视频 | 欧美日韩中出| 亚洲bbw性色大片| 日本网站在线免费观看视频| 国产精品99导航| 99国内精品久久久久久久软件| 欧美精品一区二区三区在线看午夜 | 国产露出视频在线观看| 午夜精品视频在线观看一区二区| 国产一区红桃视频| 久久精品免费播放| 久久精品久久精品亚洲人| 日韩欧美国产一区二区在线播放| 性感美女极品91精品| 亚洲一区二区综合| 亚洲女性喷水在线观看一区| 成人高清伦理免费影院在线观看| 99精品欧美一区二区三区综合在线| 国产69精品久久久久777| 精品制服美女丁香| 婷婷丁香综合| 在线天堂新版最新版在线8| 国产午夜福利100集发布| 亚洲欧美影音先锋| 欧美卡一卡二| 又黄又爽无遮挡| 亚洲综合第一| 国产精品日韩在线一区| 久久综合国产精品台湾中文娱乐网| 亚洲超丰满肉感bbw| 2020日本不卡一区二区视频| 蜜桃tv一区二区三区| 九色在线播放| 视频一区视频二区视频三区视频四区国产 | 国产专区精品| 国精一区二区三区| 2021天堂中文幕一二区在线观| 久久青青视频| 国产精品白浆| 成人同人动漫免费观看| 欧美精品18| av亚洲精华国产精华精华| 国产欧美中文在线| 亚洲欧美日韩一区在线观看| 亚洲视频分类| 国产精品男女| 九色91在线| 久久99亚洲网美利坚合众国| 中文字幕视频免费在线观看| 日韩a在线播放| 黄色一级片在线看| 国产精品一区=区| 91干在线观看| 青青久久av北条麻妃海外网| 日韩资源在线观看| 久久这里只精品| av一区二区在线观看| 亚洲一级片在线观看| 中文字幕不卡在线播放| 亚洲婷婷综合色高清在线| 亚洲欧美日韩专区| 人人狠狠综合久久亚洲婷| 午夜伦理大片视频在线观看| av一区和二区| 亚洲精品午夜久久久| 久草在线成人| 夜夜嗨av一区二区三区免费区| 国产精品美女www| 欧美嫩在线观看| 久久av中文字幕片| 禁果av一区二区三区| 巨大荫蒂视频欧美另类大| 亚洲国产欧美日韩| 人人香蕉久久| 亚洲制服一区| 黄色av观看| 久久最新视频| 午夜久久久久久久久| 亚洲一区欧美一区| 日本亚洲精品| 亚洲精品乱码久久久久久自慰| 91黑丝高跟在线| 日韩视频一区二区三区在线播放|