微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-比较两个具有相同属性的对象,但将它们混合在一起而不遵循字母规则

如果我有两个对象:

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)

解决方法:

您可以获取对象的条目,按键排序,获取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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐