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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript:比较两个JSON对象的结构,而忽略它们的值相关的知识,希望对你有一定的参考价值。

我使用基于Node.js的模拟服务器来指定和模拟来自后端的API响应。进行某种形式的后端和前端是否符合规范的检查将大有帮助。为此,我需要一种比较两个JSON对象的结构的方法。

例如,应将这两个对象视为相等:

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

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

任何想法我将如何处理?

答案

这是一个优雅的解决方案。您可以像这样简单:

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

如果两个元素具有相同的属性,则var equal必须保留为true

和作为功能:

function compareObjects(object1, object2){
    var equal = true;
    for (i in object1)
        if (!object2.hasOwnProperty(i))
            equal = false;
    return equal;
}
另一答案

您可以使用hasOwnProperty函数来执行此操作,并检查是否在object2中存在object1的每个属性名称:

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

Demo

以上是关于JavaScript:比较两个JSON对象的结构,而忽略它们的值的主要内容,如果未能解决你的问题,请参考以下文章

获取json对象的长度

20JSON

JavaScript 新增两个原始数据类型

javascript合并两个json对象

JavaScript打印JSON对象 - 树形结构输出 - 格式化JSON数组 - JS从一维数组 生成树形结构对象

JavaScript打印JSON对象 - 树形结构输出 - 格式化JSON数组 - JS从一维数组 生成树形结构对象