SOURCE

function hashFn(string, limit = 7) {

  // 自己采用的一个质数(无强制要求,质数即可)
  const PRIME = 31;

  // 1、定义存储 hashCode 的变量
  let hashCode = 0;

  // 2、使用霍纳法则(秦九韶算法),获取字符unicode码,计算 hashCode 的值
  for (let item of string) {
    hashCode = PRIME * hashCode + item.charCodeAt();
  }

  // 3、对 hashCode 取余,并返回
  return hashCode % limit;
}


function HashTable() {
    this.storage = [];
    this.limit = 7; // 哈希表长度
    this.count = 0; // 存储元素

    HashTable.prototype.put = function(key,value) {
        // 根据关键字获取index
        let index = hashFn(key,this.limit);
        let bucket = this.storage[index];

        if(bucket == null) {
            bucket = [];
            this.storage[index] = bucket;
        }

        // 遍历bucket,判断是否为修改操作
        for(let item of bucket ) {
            if(item[0] == key) {
                item[1] = value
                return 
            }
        }

        // 全部遍历没有一样的key,则为修改操作
        bucket.push([key,value]);
        this.count++;
    }


    HashTable.prototype.get = function(key) {
        let index  = hashFn(key,this.limit);
        let bucket = this.storage[index];

        if(!bucket) {
            return null;
        }

        for(let tuple of bucket) {
            if(tuple[0] == key) {
                return tuple[1]
            }
        }

        return null;
    }


    HashTable.prototype.resize = function(newLimit) {
        // 保存旧内容
        const oldStorage = this.storage;

        // 重置所有属性,现在是一个新storage
        this.storage = [];
        this.limit = 0;
        this.count = 0;

        // 遍历oldStorage内容
        for(let bucket of oldStorage) {
            // 判断bucket是否为null
            if(bucket === null) {
                continue;
            }

            // 有数据则遍历bucket
            for(tuple of bucket) {
                // 放入新storage中
                this.put(tuple[0],tuple[1])
            }
        }
    }


    HashTable.prototype.isPrime = function isPrime(num) {
        for(let i = 2; i < parseInt(Math.sqrt(num)); i++) {
            if(num % i) {
                return false
            }
        }
        return true
    }

 
 }   



    console.log(isPrime(1))
console 命令行工具 X clear

                    
>
console