我使用基于Node.js的模拟服务器来指定和模拟来自后端的API响应。如果后端和前端都符合规范,那么进行某种检查会有很大帮助。为了做到这一点,我需要一种比较两个JSON对象结构的方法。
例如,这两个对象应该被认为是相同的:
var object1 = {
'name': 'foo',
'id': 123,
'items' : ['bar', 'baz']
}
var object2 = {
'name': 'bar',
'items' : [],
'id': 234
}
任何想法我会怎么做?
答案 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);
});
}