HashTable 类,使用质数 137 限制数组长度:

  1. function HashTable() {
  2. this.table = new Array(137);
  3. }

1. simpleHash 散列函数

散列函数的选择依赖于键值的数据类型,如果键是整型,最简单的散列函数就是以数组的长度对键取余。这种散列方式称为除留余数法。

键是字符串类型,可以将字符串中每个字符的 ASCII 码数值相加的和除以数组长度的余数。

  1. HashTable.prototype.simpleHash = function(key) {
  2. var total = 0;
  3. for (var i = 0; i < key.length; i++) {
  4. total += data.charCodeAt(i);
  5. }
  6. return total % this.table.length;
  7. }

2. put 插入

参数为键值和对应的数据

  1. HashTable.prototype.put = function(key, data) {
  2. var pos = this.simpleHash(key);
  3. this.table[pos] = data;
  4. }

3. get 获取

参数为键值

  1. HashTable.prototype.get = function(key) {
  2. return this.table[this.simpleHash(key)];
  3. }

4. show 显示

  1. HashTable.prototype.show = function() {
  2. var n = 0;
  3. for (var i = 0; i < this.table.length; i++) {
  4. if (this.table[i]) {
  5. console.log(i + ': ' + this.table[i]);
  6. }
  7. }
  8. }