写了一个比较两个json对象是否相同的方法,大家瞅瞅看有没有啥问题
/**
* 比较两个json对象的键和值是否都相同,如果有一个对象不是json对象,则返回false
* json值的比较只支持 String JSON Number Boolean
* @param {Object} obj1 [description]
* @param {Object} obj2 [description]
* @return {Boolean} [description]
*/
function compareJsonObj(obj1, obj2){
if(!isJsonObj(obj1) || !isJsonObj(obj2)) return false;
var _keys = Object.keys(obj1);
if(_keys.length != Object.keys(obj2).length) return false;
for(var _key in obj1){
if(!obj2.hasOwnProperty(_key)) return false;
var value1 = obj1[_key];
var value2 = obj2[_key];
if(isJsonObj(value1)) return compareJsonObj(value1, value2);
//if(value1!==value2) return false;//这种比较方法,1和“1”不同
if(String(value1)!=String(value2)) return false;
}
return true;
}
//判断一个对象是否是json对象
function isJsonObj(data){
return typeof(data) == "object" &&
Object.prototype.toString.call(data).toLowerCase() == "[object object]"
&& !data.length;
}