Google Chrome 的一个 BUG?或设定?

2021-08-06 16:51:11 +08:00
 clf

开发者工具-网络-点击一个返回 json 的链接,发现 priview 和 response 的排序是不一样的。

以下是乱序的部分,接口下发的 user 是在 MzM=前面的,但在 priview 里是倒过来的,js 里和 priview 是一样的顺序。所以,这是 js 的某种设定么? [ postman 里顺序是和接口下发的 response 一致的]

{
    "user": {
        "title": "用户信息",
        "type": "user",
        "coded": false,
        "display": [
            "name"
        ],
        "scored": false,
        "readonly": false,
        "invisible": false
    },
    "MzM=": {
        "title": "33",
        "type": "decimal",
        "coded": false,
        "scored": false,
        "readonly": false,
        "invisible": false
    }
}
1231 次点击
所在节点    全球工单系统
7 条回复
temporary
2021-08-06 17:16:07 +08:00
对象的键是无序的吧
AoEiuV020
2021-08-06 17:26:08 +08:00
json object 本来就是无序的,preview 应该是内部解析了一遍再打印出来,顺序不能保证,
要确定的顺序用 json array,
codehz
2021-08-07 15:43:01 +08:00
按规范就是无序的,你有序只是幻觉,或者说是巧合
比如
o={1: 2, "3": 5, "2": 4, "a": 6, 4: 7}
Object.keys(o)
在 chrome 里会得到 ["1", "2", "3", "4", "a"]
clf
2021-08-07 20:26:09 +08:00
@codehz #3 嗯,发现了,但有个很难解释的情况:

在直接使用此对象时,比如 JsonSchema 去按 Object 的顺序渲染表单,表单的顺序和此对象的实际顺序是一致的,而和打印 /遍历顺序是不一致的。是否可以表明,在某种情况下其实是可以以插入顺序 /生成顺序读取的。不然的话 JsonSchema 的表单结构设计为何不是 Array 而是 Object:

这是 react-jsonschema-form 的 JsonSchema 描述表单字段的部分:

"properties": {
"firstName": {
"type": "string",
"title": "First name",
"default": "Chuck"
},
"lastName": {
"type": "string",
"title": "Last name"
},
"telephone": {
"type": "string",
"title": "Telephone",
"minLength": 10
}
}
codehz
2021-08-08 08:33:10 +08:00
@lychs1998 这没啥不好解释的,用无序的对应无序的有啥问题呢,你换个顺序 JSON Schema 就不认了吗
codehz
2021-08-08 08:34:32 +08:00
哦,是说渲染表单啊, 你猜猜 ui:order 是干啥的
clf
2021-08-08 12:17:11 +08:00
@codehz #5
换了顺序后表单的组件顺序也变了。

ui:order 字段没有用到;目前页面上显示顺序都是对的,即便在输出到控制台时会重新排序。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/794125

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX