相关疑难解决方法(0)

在Javascript中从字符串生成哈希

我需要将字符串转换为某种形式的哈希.这在JavaScript中可行吗?

我没有使用服务器端语言,所以我不能这样做.

javascript hash

530
推荐指数
17
解决办法
53万
查看次数

为什么不赞成修改JavaScript对象的原型?

我在这里和那里看到一些关于修改JavaScript对象原型的不满意的评论?我个人不知道这可能是一个什么问题.例如,扩展Array对象以具有map和include方法或创建更强大的Date方法?

javascript monkeypatching

18
推荐指数
3
解决办法
6271
查看次数

为什么散列函数左移 5 位?

在 JavaScript 的简单(非安全)散列函数中给出了在 JS 中生成散列函数的流行答案在Javascript中从字符串生成哈希

代码示例之一是:

String.prototype.hashCode = function() {
    var hash = 0;
    if (this.length == 0) {
        return hash;
    }
    for (var i = 0; i < this.length; i++) {
        var char = this.charCodeAt(i);
        hash = ((hash<<5)-hash)+char;
        hash = hash & hash; // Convert to 32bit integer
    }
    return hash;
}
Run Code Online (Sandbox Code Playgroud)

对我来说没有意义的一行是 hash = ((hash<<5)-hash)+char;

有人可以解释为什么要这样做吗?我认为我们正在5 bit left shift对哈希进行处理。有什么理由为什么它是 5 位而不是 4 位或 6 位吗?另外为什么我们然后减去散列并添加字符?

javascript hash bitwise-operators

5
推荐指数
1
解决办法
1832
查看次数