//数组比较 相同为true
function compareArray(o1,o2){
debugger;
if(!isArray(o2)) return false;
if(o1.length != o2.length) return false;
for(var index in o1){
if(o1[index] != o2[index]) return false;
}
return true;
}
/**
* 比较两个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;
const _keys = Object.keys(obj1);
if(_keys.length != Object.keys(obj2).length) return false;
for(const _key in obj1){
if(!obj2.hasOwnProperty(_key)) return false;
const value1 = obj1[_key];
const value2 = obj2[_key];
if(isJsonObj(value1)) return compareJsonObj(value1, value2);
debugger
if(isArray(value1)) return compareArray(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;
}
//判断数组
function isArray(object) {
return object && typeof (object) == 'object' && object.constructor == Array;
}
json对象含有数组的比较相等
最新推荐文章于 2024-05-15 10:05:36 发布