1. 程式人生 > >javascript 物件比較(hashcode)

javascript 物件比較(hashcode)

出處

也可參考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);
複製程式碼