JavaScript:比较两个JSON对象的结构,同时忽略它们的值

时间:2014-05-23 09:58:10

标签: javascript json comparison

我使用基于Node.js的模拟服务器来指定和模拟来自后端的API响应。如果后端和前端都符合规范,那么进行某种检查会有很大帮助。为了做到这一点,我需要一种比较两个JSON对象结构的方法。

例如,这两个对象应该被认为是相同的:

var object1 = {
    'name': 'foo',
    'id': 123,
    'items' : ['bar', 'baz']
}

var object2 = {
    'name': 'bar',
    'items' : [],
    'id': 234
}

任何想法我会怎么做?

2 个答案:

答案 0 :(得分:2)

这是一个优雅的解决方案。你可以这么简单地做到这一点:

var equal = true;
for (i in object1)
    if (!object2.hasOwnProperty(i))
        equal = false;

如果两个元素具有相同的属性,那么var equal必须保持true

作为功能:

function compareObjects(obj1, obj2){
    var equal = true;
    for (i in object1)
        if (!object2.hasOwnProperty(i))
            equal = false;
    return equal;
}

答案 1 :(得分:0)

您可以使用hasOwnProperty函数执行此操作,并检查对象1中是否包含对象2的每个属性名称:

function hasSameProperties(obj1, obj2) {
  return Object.keys(obj1).every( function(property) {
    return obj2.hasOwnProperty(property);
  });
}

Demo