两个对象之间的部分深度比较

时间:2017-07-22 03:00:06

标签: javascript json

使用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

1 个答案:

答案 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);

}