Maison > interface Web > js tutoriel > js实现HashTable(哈希表)的实例分析

js实现HashTable(哈希表)的实例分析

高洛峰
Libérer: 2016-12-06 11:03:23
original
1056 Les gens l'ont consulté

一、javascript哈希表简介

javascript里面是没有哈希表的,一直在java,C#中有时候用到了这一种数据结构,javascript里面若没有,感觉非常不顺手。细细看来,其实javascript的object的属性其实与哈希表非常类似。

如:

1

2

var person = {};

person["name"] = "关羽";

Copier après la connexion

我们只需要在其基础上再封装一些HashTable的函数,就能够得到一个精简版的哈希表。

加入函数如下:

22.png

二、代码实现

其具体的实现可以查看代码,都不算很复杂的东西。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

function HashTable() {

 var size = 0;

 var entry = new Object();

 this.add = function (key, value) {

 if (!this.containsKey(key)) {

 size++;

 }

 entry[key] = value;

 }

 this.getValue = function (key) {

 return this.containsKey(key) ? entry[key] : null;

 }

 this.remove = function (key) {

 if (this.containsKey(key) && (delete entry[key])) {

 size--;

 }

 }

 this.containsKey = function (key) {

 return (key in entry);

 }

 this.containsValue = function (value) {

 for (var prop in entry) {

 if (entry[prop] == value) {

 return true;

 }

 }

 return false;

 }

 this.getValues = function () {

 var values = new Array();

 for (var prop in entry) {

 values.push(entry[prop]);

 }

 return values;

 }

 this.getKeys = function () {

 var keys = new Array();

 for (var prop in entry) {

 keys.push(prop);

 }

 return keys;

 }

 this.getSize = function () {

 return size;

 }

 this.clear = function () {

 size = 0;

 entry = new Object();

 }

}

Copier après la connexion

简单使用示例:

1

2

3

4

var manHT = new HashTable();

manHT.add("p1","刘备");

manHT.add("p2","关羽");

$("#div1").text(manHT.getValue("p1"));

Copier après la connexion

   


Étiquettes associées:
js
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal