JavaScript:比较两个JSON对象的结构,同时忽略它们的值
我使用基于Node.js的模拟服务器来指定和模拟来自后端的API响应。对后端和前端是否都符合规范进行某种检查将非常有帮助。为了做到这一点,我需要某种方法来比较两个JSON对象的结构 例如,应将这两个对象视为相等:JavaScript:比较两个JSON对象的结构,同时忽略它们的值,javascript,json,comparison,Javascript,Json,Comparison,我使用基于Node.js的模拟服务器来指定和模拟来自后端的API响应。对后端和前端是否都符合规范进行某种检查将非常有帮助。为了做到这一点,我需要某种方法来比较两个JSON对象的结构 例如,应将这两个对象视为相等: var object1 = { 'name': 'foo', 'id': 123, 'items' : ['bar', 'baz'] } var object2 = { 'name': 'bar', 'items' : [], 'id'
var object1 = {
'name': 'foo',
'id': 123,
'items' : ['bar', 'baz']
}
var object2 = {
'name': 'bar',
'items' : [],
'id': 234
}
你知道我该怎么做吗?你可以使用函数,检查object1的每个属性名,它是否在object2中:
function hasSameProperties(obj1, obj2) {
return Object.keys(obj1).every( function(property) {
return obj2.hasOwnProperty(property);
});
}
这是一个优雅的解决方案。你可以这样简单地做:
var equal = true;
for (i in object1) {
if (!object2.hasOwnProperty(i)) {
equal = false;
break;
}
}
如果这两个元素具有相同的属性,那么varequal
必须保持true
作为功能:
function compareObjects(object1, object2){
for (i in object1)
if (!object2.hasOwnProperty(i))
return false;
return true;
}
我认为这篇文章可能会帮助你:最好的评论这是一个很好的起点。这里的问题是,它不适用于嵌套对象或数组。我扩展了嵌套对象的解决方案,但如果数组的长度不同,它们仍然存在问题: