javascript 物件比較(hashcode)
阿新 • • 發佈:2018-11-13
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);