如何“重置”对象的属性顺序? JSON.stringify()保留它们

时间:2017-04-13 17:59:24

标签: javascript json properties stringify

两个相同的对象,属性顺序是唯一的区别:

const obj1 = {aaa: 1, bbb: 2, ccc: 3};
const obj2 = {ccc: 3, aaa: 1, bbb: 2};

现在,如果我使用JSON.stringify(),它将保留顺序并生成:

{"aaa":1,"bbb":2,"ccc":3}
{"ccc":3,"aaa":1,"bbb":2}

有没有办法“重置”对象的属性顺序? 比将所有Object.keys()放入数组,然后按字母顺序排序,然后创建空对象并逐个添加每个属性更优雅。?

P.S。我知道有更好的方法来比较两个对象,但事实并非如此。

1 个答案:

答案 0 :(得分:1)

不,除了将密钥放入数组之外没有任何办法。原因是JavaScript对象的键没有任何有意义的顺序。

JavaScript对象本质上是哈希映射,这意味着给定任何键都有恒定的查找时间,但键本身没有有意义的顺序。由于在JavaScript中对键进行排序的唯一原因是出于可读性目的,因此没有内置的解决方案可以更好地处理这一问题。