Я пытаюсь узнать, как сделать некоторые основные хэширования в 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 & hash
. Спасибо за ваши ответы.
Примечание: Для тех, кто ищет источник, это реализация String.hashCode в Java(): http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method
Где именно вы нашли этот код? Я не думаю, что это очень хорошо в качестве примера. В частности, шаг 'hash = hash & hash' выглядит излишним. Полагаю, может быть, чтобы сохранить значение в целочисленном диапазоне. – Pointy
Я точно не помню. Я искал в Google, и это подошло. Недавно я об этом узнал, и, поскольку я действительно не понимал, как это работает, я разместил его здесь. –
Можете ли вы привести лучший пример. –