如何在Typescript中获取对象的哈希值?

时间:2016-04-23 13:11:48

标签: typescript ecmascript-6

如何获取typescript中对象的哈希值。

例如:

let user:any = {name:'tempuser', age:'29'};
let anotheruser:any = {name:'iam', age:'29'};
if( Object.GetHashCode(user) === Object.GetHashCode(anotheruser)){
   alert('equal');
}

我们也可以识别对象是否被修改。

3 个答案:

答案 0 :(得分:3)

AFAIK,JavaScript和TypeScript都不提供通用的散列函数。

您必须导入第三方库,例如ts-md5,并为其提供对象的字符串表示形式:Md5.hashStr(JSON.stringify(yourObject))

显然,根据您的确切用例,这可能是完美的,或者太慢,或产生太多冲突......

答案 1 :(得分:3)

如果要比较对象而不是数据,则@Valery解决方案不适合您,因为它将比较数据而不是两个对象。 如果要比较数据而不是对象,那么JSON.stringify(obj1)=== JSON.stringify(obj2)就足够了,这是简单的字符串比较。

答案 2 :(得分:1)

对于非加密用途,例如实现哈希表,这里是字符串的古老 java hashCode 的打字稿:

export function hashCode(str: string): number {
    var h: number = 0;
    for (var i = 0; i < str.length; i++) {
        h = 31 * h + str.charCodeAt(i);
    }
    return h & 0xFFFFFFFF
}