一般情况下是不会的,但是不同浏览器、引擎、内核可能会有差别吧。
请问什么情况下顺序会乱?
如何保证顺序的准确性?
1
churchill 2023-02-03 12:59:09 +08:00 1
如果序列化的对象是 Array ,那肯定是正确排序的。
如果你说的是对象的 property ,现代浏览器上也是确定的 这里有个讨论 https://github.com/mdn/content/issues/16583 |
2
lmshl 2023-02-03 13:06:16 +08:00 3
|
3
unt OP @churchill #1 正常业务都是复杂的,比如说:
{key:"ctrl",data:[{key:'key1',value:{a:1,b:2}},{key:'key2',value:{a:1,b:2}}]} |
4
676529483 2023-02-03 13:23:14 +08:00
和 json 库没关系吧,本质是迭代器返回的顺序是否是固定的,这个不同语言不同对象不一样吧
|
5
dog 2023-02-03 13:44:52 +08:00
有个小坑:chrome 控制台看到的 object 不一定跟 json 一样
|
6
codewld 2023-02-03 13:46:32 +08:00
```javascript
let obj = {a: 1, b: 2} let obj2 = {b: 2, a: 1} console.log(JSON.stringify(obj), JSON.stringify(obj2)) // {"a":1,"b":2} {"b":2,"a":1} console.log(JSON.stringify(obj, ['a', 'b']), JSON.stringify(obj2, ['a', 'b'])) // {"a":1,"b":2} {"a":1,"b":2} ``` |
7
whileFalse 2023-02-03 15:42:25 +08:00 via iPhone
不建议依赖这种特性 如果对属性的顺序敏感,可以像楼上说的那样通过数组存储
|
8
izumiiAoba 2023-02-03 21:51:18 +08:00 via iPhone
stackoverflow.com/questions/16167581
用 `JSON.stringify` 第二个参数,可以实现按顺序 |