javascript 对象比较(hashcode)

来源:互联网 发布:java定义常量的关键字 编辑:程序博客网 时间:2024/05/22 02:03

出处

也可参考underscore.js的对比

javascript 对象的比较是比较坑爹的一件事,因为javascript对象比较的是引用地址!当两个内容完全一样的对象比较:

复制代码
        var object1={            name:"1234 ",            code:123,            test:"321",        };        var object2={            name:"1234 ",            code:123,            test:"321",        };        console.log(object1==object2)   //false
复制代码

解决方法使用hashcode

javascript hashcode实现

复制代码
function hashcode(str) {  var hash = 0, i, chr, len;  if (str.length === 0) return hash;  for (i = 0, len = str.length; i < len; i++) {    chr   = str.charCodeAt(i);    hash  = ((hash << 5) - hash) + chr;     hash |= 0; // Convert to 32bit integer }  return hash; } 
复制代码

实例:

复制代码
        var object1={            name:"1234 ",            code:123,            test:"321",        };        var object2={            name:"1234 ",            code:123,            test:"321",        };        console.log(object1==object2)   //false        var test1=hashcode(JSON.stringify(object1));        var test2=hashcode(JSON.stringify(object2));        console.log(test1,test2,test1==test2);
复制代码
原创粉丝点击