使用JavaScript来实现两个对象的深度是comapre,如果true不等于return,则返回false。第一个参数比较原始对象,第二个参数用于比较目标对象,对象属性存在的值只存在,如果对象属性不存在于原始对象中,则会直接返回false。以下是一些例子。
const object = {
id: 1,
name: 'test',
product: {
id: 1,
name: 'product'
},
updatedAt: 'now'
};
const objectA = {
name: 'test',
product: {
name: 'product'
}
};
const objectB = {
name: 'test',
product: {
name: 'anotherProduct'
}
};
compare(object, objectA) // return true
compare(object, objectB) // return false
答案 0 :(得分:0)
这是我做的解决方案, 小提琴 - https://jsfiddle.net/jayjoshi64/qn70yosx/5/
它有递归函数,它将检查两个给定对象是对象还是一个隐式对象。
如果它是对象,它将再次以递归方式检查它们是否相同。 函数的代码比较..
它适用于您的对象。!
function compare(first,second)
{
//alert("once");
var flag=true;
if(typeof second=='object')
{
//if the variable is of type object
if(typeof first!='object')
{
flag=false
}
else
{
//check every key of object
$.each(second, function(key, value) {
//if socond's key is available in first.
if(first.hasOwnProperty(key))
{
//recursive call for the value.
if(!compare(first[key],second[key]))
{
flag=false;
}
}
else
{
flag=false
}
});
}
}
else
{
// if two objects are int,string,float,bool.
if(first!=second)
{
flag=false;
}
}
return(flag);
}