如果我有两个对象:
const a = {
sample: 'this is sample',
errorMessage: 'status is error'
}
const b = {
errorMessage: 'status is error'
sample: 'this is sample',
}
我知道如何按对象的排序键对属性进行排序,但不不知道如何将其解析为对象。
示例:
const sortA = JSON.stringify(Object.keys(a).sort)
const sortB = JSON.stringify(Object.keys(b).sort)
expected(sortA).toEquals(sortB)
答案 0 :(得分:2)
您可以获取对象的条目,按键排序,获取JSON并比较字符串。
这仅适用于非嵌套对象。
const
sortBy = k => (a, b) => a[k].localeCompare(b[k]),
a = { sample: 'this is sample', errorMessage: 'status is error' },
b = { errorMessage: 'status is error', sample: 'this is sample' },
sortA = JSON.stringify(Object.entries(a).sort(sortBy(0))),
sortB = JSON.stringify(Object.entries(b).sort(sortBy(0)));
console.log(sortA === sortB);
答案 1 :(得分:1)
您需要使用toEqual
进行对象比较:
expected(sortA).toEqual(sortB)
答案 2 :(得分:0)
您应该创建一个执行此操作的函数:
const a = {
sample: 'this is sample',
errorMessage: 'status is error',
};
const b = {
errorMessage: 'status is error',
sample: 'this is sample',
};
const c = {
errorMessage: 'status is error !',
sample: 'this is sample',
};
const compare = (ob1, ob2) =>
Object.keys(ob1).length === Object.keys(ob2).length
&& !Object.keys(ob1).some(key => ob2[key] !== ob1[key]);
console.log(compare(a, b));
console.log(compare(a, c));