// 去重
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
|