javascript 對象比較(hashcode)


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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM