javascript - "reset"对象的属性顺序如何? JSON.stringify() 保留它们

标签 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() 放入一个数组,然后按字母顺序排序,然后创建空对象并一个一个地添加每个属性更优雅的东西......?

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

最佳答案

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

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

关于javascript - "reset"对象的属性顺序如何? JSON.stringify() 保留它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43398861/

相关文章:

javascript - 如何用数组过滤对象

C# getters setters 样式

javascript - 将 AngularJS 与 Express 结合使用

javascript - 从数组中删除最后一项(并且不返回项)

javascript - Javascript 对象中的变量方法

javascript - 向 JSON 解析对象添加方法

javascript - 一页上的多个灯箱画廊

java - 使用Gson解析一个巨大的JSON对象,其中包含数组和对象?

javascript - 如何将 JavaScript 变量作为属性存储在对象内部

objective-c - ARC 是否消除了 Objective-C 中对属性的需求?