我们可以使用递归函数来比较两个JSON树是否相等。
示例代码如下:
function compareJsonTrees(tree1, tree2) {
if (typeof (tree1) !== typeof (tree2)) {
return false;
}
if (typeof (tree1) === 'object') {
if (Array.isArray(tree1) !== Array.isArray(tree2)) {
return false;
}
if (Array.isArray(tree1)) {
if (tree1.length !== tree2.length) {
return false;
}
for (let i = 0; i < tree1.length; i++) {
if (!compareJsonTrees(tree1[i], tree2[i])) {
return false;
}
}
} else {
const keys1 = Object.keys(tree1).sort();
const keys2 = Object.keys(tree2).sort();
if (keys1.length !== keys2.length) {
return false;
}
for (let i = 0; i < keys1.length; i++) {
const key = keys1[i];
if (key !== keys2[i]) {
return false;
}
if (!compareJsonTrees(tree1[key], tree2[key])) {
return false;
}
}
}
} else {
if (tree1 !== tree2) {
return false;
}
}
return true;
}
然后,我们可以使用上述方法来比较两个包含对象的数组是否相等:
const arr1 = [{name: 'Jon'}, {name: 'Doe'}];
const arr2 = [{name: 'Jon'}, {name: 'Doe'}];
if (compareJsonTrees(arr1, arr2)) {
console.log('They are equal!');
} else {
console.log('They are not equal!');
}
在上述示例中,由于arr1和arr2包含相同的对象,因此两个数组被视为相等,将输出'They are equal!”。