如何获取typescript中对象的哈希值。
例如:
let user:any = {name:'tempuser', age:'29'};
let anotheruser:any = {name:'iam', age:'29'};
if( Object.GetHashCode(user) === Object.GetHashCode(anotheruser)){
alert('equal');
}
我们也可以识别对象是否被修改。
答案 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
}