项⽬中⼀次排序规则的改动,注意到js中map的遍历的顺序
背景:项⽬需要对前端页⾯上某个插件的下拉选择项进⾏排序,需要按照配置的顺序显⽰。
⾸先调查后台,发现sql语句中已经添加order by。之后发现查询结果遍历后封装进HashMap,这⾥改为LinkHashMap。再之后向前端返回json数据,使⽤的是net.sf.json.JSONObject,该⽅法对map进⾏序列化时是⽆序的,改⽤Gson进⾏序列化。
数据传到前端,使⽤Chrome的debug发现右侧Watch中json数据是按照map中key值的字母顺序进⾏排列的,这时候有点犯难,难道需要修改数据格式为数组或者从后端再传送顺序过来吗?因为使⽤该插件的地⽅很多⽽且不容易修改,所以开始从后端多传递⼀个数据存储数据顺序。修改完成之后,进⾏测试,⽐较顺利,然后⼜发现,有⼀个没有按照新传递的顺序进⾏处理的地⽅也可以正常排序了。仔细进⾏调查之后,发现下⾯情况:
js中map遍历的顺序是按照插⼊的顺序来执⾏的。如果map的来源是字符串转换的,那么就会按照字符串中key值的顺序进⾏遍历。千万不要被debug中显⽰的顺序误导,这⾥应该是为了⽅便查看对key进⾏了字母顺序排序。
后端字符串转数组

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。