我想学习如何在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 & hash
的含义。谢谢您的回复。注意:如果有人正在寻找源代码,这是Java的String.hashCode()的实现:http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method。
hash = hash & hash
这一步看起来是多余的。我猜它可能是为了保持值在整数范围内。 - Pointy