/**
* 判断此对象是否是Object类型
* @param {Object} obj
*/
const __isObject=(obj)=>{return Object.prototype.toString.call(obj)==="[object Object]"};
/**
* 判断此类型是否是Array类型
* @param {Array} arr
*/
const __isArray=(arr)=>{
return Object.prototype.toString.call(arr) === "[object Array]"
};
/**
* 深度比较两个对象是否相同
* @param {Object} newData
* @param {Object} oldData
*/
function equalObj(newData,oldData){
// 为基本类型时,如果相同,返回true
if(newData===oldData)return true
if(__isObject(newData)&&__isObject(oldData)&&Object.keys(newData).length===Object.keys(oldData).length){
// 遍历所有对象中的属性,判断元素是否相同
for (const key in newData) {
if (newData.hasOwnProperty(key)) {
if(!equalObj(newData[key],oldData[key]))return false
}
}
}else if(__isArray(newData)&&__isArray(oldData)&&Object.keys(newData).length===Object.keys(oldData).length){
// 类型为数组并且数组长度相同
for (let i = 0; i < newData.length; i++) {
if(!equalObj(newData[i],oldData[i])){
return false
}
}
}
else{
return false
}
// 说明数组或者对象中所有元素都相同,返回true
return true
};
var eq= equalObj([{name:'张三'}],[{name:"李四"}])
console.log(eq);//false
var eq1= equalObj([{name:'张三'}],[{name:"张三"}])
console.log(eq1);//true
深度比较两个对象是否相同
最新推荐文章于 2025-06-04 20:55:25 发布
768

被折叠的 条评论
为什么被折叠?



