JSON.stringify(object1) === JSON.stringify(object2)
/*
* @fn 比较对象或者数组是否全等
* @param object1 {Object OR Array} 对象1
* @param object2 {Object OR Array} 对象2
* @return {Boolean} true 为相等, false 为不等, 0 为传入参数不是对象也不是数组
*/
let ifCompare = function (object1, object2) {
if (object1 && object2) {
if (Array.isArray(object1) && Array.isArray(object2)) {
if (!forArr(object1, object2)) return false;
}
if (typeof object1 == 'object' && typeof object2 == 'object') {
let o1keys = Object.keys(object1); // 把对象所有键遍历转成数组['k1','k2']
let o2keys = Object.keys(object2);
if (o2keys.length !== o1keys.length) return false;
for (let i = 0; i <= o1keys.length - 1; i++) {
let key = o1keys[i];
if (!o2keys.includes(key)) return false; // 查找字符串或数组是否包含 "key"
if (object2[key] && object1[key]) {
if (Array.isArray(object2[key]) && Array.isArray(object1[key])) {
if (!forArr(object2[key], object1[key])) return false;
} else if (typeof object2[key] == 'object' && typeof object1[key] == 'object') {
if (!ifCompare(object1[key], object2[key])) return false;
} else if (object2[key] !== object1[key]) return false;
} else {
if (object2[key] !== object1[key]) return false;
}
}
return true;
}
}
function forArr(arr1, arr2) {
if (arr1.length !== arr2.length) return false;
for (let i = 0; i < arr1.length; i++) {
if (arr1[i] && arr2[i]) {
if (Array.isArray(arr1[i]) && Array.isArray(arr2[i])) forArr(arr1[i], arr2[i]);
else if (typeof arr1[i] == 'object' && typeof arr2[i] == 'object') {
if (!ifCompare(arr1[i], arr2[i])) return false;
} else if (arr1[i] !== arr2[i]) return false;
} else {
if (arr1[i] !== arr2[i]) return false;
}
}
return true;
}
return 0;
};
Object.entries(object1).toString() === Object.entries(object2).toString();