// 去重 Array.prototype.unique = function(){ this.sort(); var re=[this[0]]; for(var i = 1; i < this.length; i++){ if( this[i] !== re[re.length-1]){ re.push(this[i]); } } return re; } var o2o = function(o1,o2){ if(typeof o1 != typeof o2){ return false; } if(typeof o1.length != typeof o2.length ){ return false; } var bool = true; var keyArr1 = []; var keyArr2 = []; for(var i in o1){ keyArr1.push(i); } for(var i in o2){ keyArr2.push(i); } if(keyArr1.length != keyArr2.length){ return false; } for(var i=0, k=keyArr2.length;i<k;i++){ keyArr1.push(keyArr2[i]); } var keyArr = keyArr1.unique(); for(var i=0,k=keyArr.length;i<k;i++){ if( ( keyArr[i] in o1 ) && ( keyArr[i] in o2 ) ){ if( typeof o1[keyArr[i]] == 'object' && typeof o2[keyArr[i]] == 'object' ){ bool = o2o( o1[keyArr[i]], o2[keyArr[i]] ); }else if( o1[keyArr[i]] !== o2[keyArr[i]] ){ return false; } }else{ return false; } } return bool; }; 使用方法 var o1 = { age : 18, info : { 'author' : 'lee', 'job' : [ 'a','b' ] }, 'name' : 'laowu' }; var o2 = { 'name' : 'laowu', 'age' : 18, info : { 'author' : 'lee', 'job' : [ 'a', 'b' ] } }; console.log(o2o(o1,o2)); // true
把o1的age換成字串的18 var o1 = { age : "18", info : { 'author' : 'lee', 'job' : [ 'a','b' ] }, 'name' : 'laowu' }; var o2 = { 'name' : 'laowu', 'age' : 18, info : { 'author' : 'lee', 'job' : [ 'a', 'b' ] } }; console.log(o2o(o1,o2)); // false |