Javascript哈希算法
作者:互联网
我正在尝试学习如何在Javascript中进行一些基本哈希,我遇到了以下算法:
var hash = 0;
for (i = 0; i < this.length; i++) {
char = str.charCodeAt(i);
hash = ((hash<<5)-hash)+char;
hash = hash & hash;
}
我真的不明白它是如何工作的,我希望你能帮助我.特别是我不明白(hash<< 5)-hash和hash = hash&哈希值.谢谢您的回复.
注意:对于任何寻找源代码的人来说,它是Java的String.hashCode()的实现:
http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method
解决方法:
这一步
hash = ((hash << 5) - hash) + char;
有效地:
hash = ((hash * 32) - hash) + char;
然后,
hash = hash & hash;
只有在数字溢出整数范围(32位或31位)时才会更改该值. (我不这样做,但这是风格问题.)
在该代码中,应声明变量“i”和“char”:
var hash = 0, i, char;
标签:javascript,algorithm,string-hashing 来源: https://codeday.me/bug/20190728/1565763.html