javascript 哈希表(hashtable)的简单实现

  首先简单的介绍关于属性的一些方法:

  属性的枚举:

  for/in循环是遍历对象属性的方法。如

  

复制代码 代码如下:

  var obj = {

  name : 'obj1',

  age : 20,

  height : '176cm'

  }

  var str = '';

  for(var name in obj)

  {

  str += name + ':' + obj[name] + '\n';

  }

  alert(str);

  输出为:name:obj1

  age:20

  height:176cm

  检查属性是否存在:

  in运算符可以用来测试一个属性是否存在。

  

复制代码 代码如下:

  this.containsKey = function ( key )

  {

  return (key in entry);

  }

  删除属性

  使用delete运算符来删除一个对象的属性。使用delete删除的属性,for/in将不会枚举该属性,并且in运算符也不会检测到该属性。

  delete entry[key];

  delete obj.name;

  下面是哈希表(hashtable)的js的实现方法:

  

复制代码 代码如下:

  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();

  }

  }

  测试:

  代码

  

复制代码 代码如下:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>HashTable</title>

  <script type="text/javascript" src="/js/jquery.js"></script>

  <script type="text/javascript" src="/js/HashTable.js"></script>

  <script type="text/javascript">

  function MyObject(name)

  {

  this.name = name;

  this.toString = function(){

  return this.name;

  }

  }

  $(function(){

  var map = new HashTable();

  map.add("A","1");

  map.add("B","2");

  map.add("A","5");

  map.add("C","3");

  map.add("A","4");

  var arrayKey = new Array("1","2","3","4");

  var arrayValue = new Array("A","B","C","D");

  map.add(arrayKey,arrayValue);

  var value = map.getValue(arrayKey);

  var object1 = new MyObject("小4");

  var object2 = new MyObject("小5");

  map.add(object1,"小4");

  map.add(object2,"小5");

  $('#console').html(map.getKeys().join('|') + '<br>');

  })

  </script>

  </head>

  <body>

  <div id="console"></div>

  </body>

  </html>

  javascript hashtable实现代码

  http://www.glzy8.com/article/20372.htm