var djb2HashCode = function (key) { var hash = 5381; for (var i = 0; i < key.length; i ++) { hash = hash * 33 + key.charCodeAt(i) } return hash % 1013;}复制代码
有时散列函数会发生冲突,即为某些属性名编码时,会得到相同的返回值,这是由于不同字符对应的ASCII的值不同,所以可能出现的偶然性,采用此方法可减少冲突的次数,另外也可以使用分离链接活着线性探查的方式
线性链接
就是将键值相同的几个数据编写成链表,把这个链表放入该键值(position)中
线性探查
就是当添加元素时发现相同的键值(position)已被占用,那么就把这个数据放到该键值(position)+1的位置,如果position+1的位置也存在值,那么就放到position+2的位置