怎么做一元购物网站,网站前端语言,网站建设木马科技,北京app制作公司文章目录 1.前言2. 为什么会这样#xff1f;3.如何解决#xff1f; 1.前言
作者作为新人入职的第一天#xff0c;mentor给了一个维护公司运营平台的小需求#xff0c;具体需求是根据运营平台的某个管理模块所展示记录的某些字段对展示记录做排序。 第一步#xff1a; myb… 文章目录 1.前言2. 为什么会这样3.如何解决 1.前言
作者作为新人入职的第一天mentor给了一个维护公司运营平台的小需求具体需求是根据运营平台的某个管理模块所展示记录的某些字段对展示记录做排序。 第一步 mybatis plus组装排序查询sql得到排序后的展示记录 第二步 使用LinkedHashMap根据插入顺序排序装载展示记录后转成json返回给前端key为记录的id 最终展示在Chrome浏览器的结果是未排序的原始数据相当于我查询时候的排序白做了。
2. 为什么会这样
这主要是因为ECMAScript 6ES6规范中明确定义了对象属性的枚举顺序。当对象的属性名都是数字或字符串时这些属性会按照属性名在字符编码中的顺序进行排序。Chrome浏览器遵循了这一规范因此在处理JSON数据时会自动按键值排序。 假设你原来的JSON数据是这样的
{4: 444,1: 111,6: 66,9: 9
}浏览器会自动将其排序为
{1: 111,4: 444,6: 66,9: 9
}3.如何解决
我的解决方案是修改数据结构避免使用直接以数字或字符串作为键的对象。数据结构转为List结构其中每个元素都是一个包含键值对的对象。这样自己就可以控制数据的顺序而不用担心浏览器会自动排序。 json格式如下
[{id: 4, name: 444},{id: 1, name: 111},{id: 6, name: 66},{id: 9, name: 9}
]啊啊啊啊啊啊一开始没忘这方面想硬控我好久。。。。。希望能够帮助到后面遇到相同问题的朋友