为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript的散列函数问题

JavaScript的散列函数问题

慕侠2389804 2019-03-12 13:15:29
   var loseloseHashCode = function (key) {        var hash = 0;        for (var i = 0; i < key.length; i++) {            hash += key.charCodeAt(i);        }        return hash % 37;    };        this.put = function(key, value) {        var position = loseloseHashCode(key); //{5}        console.log(position + ' - ' + key); //{6}        table[position] = value; //{7}    };问题:看到某本书上的散列函数最后return hash %37,我测试这样会出现覆盖啊。比如当key='Abc'和key='fbc'的时候,因为Abc的ASCII码值之和=262,而fbc的ASCII值之和=299。他们两个各自Mod37=3。所以都会在position=3这个位置上插入一个值,最后结果产生覆盖。书上上是为了比较小的数值,但这样会产生覆盖啊,这样是散列函数的本义吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信