背景:项目需要对前端页面上某个插件的下拉选择项进行排序,需要按照配置的顺序显示。

首先调查后台,发现sql语句中已经添加order by。之后发现查询结果遍历后封装进HashMap,这里改为LinkHashMap。再之后向前端返回json数据,使用的是net.sf.json.JSONObject,该方法对map进行序列化时是无序的,改用Gson进行序列化。

数据传到前端,使用Chrome的debug发现右侧Watch中json数据是按照map中key值的字母顺序进行排列的,这时候有点犯难,难道需要修改数据格式为数组或者从后端再传送顺序过来吗?因为使用该插件的地方很多而且不容易修改,所以开始从后端多传递一个数据存储数据顺序。修改完成之后,进行测试,比较顺利,然后又发现,有一个没有按照新传递的顺序进行处理的地方也可以正常排序了。仔细进行调查之后,发现下面情况:

js中map遍历的顺序是按照插入的顺序来执行的。如果map的来源是字符串转换的,那么就会按照字符串中key值的顺序进行遍历。千万不要被debug中显示的顺序误导,这里应该是为了方便查看对key进行了字母顺序排序。

项目中一次排序规则的改动,注意到js中map的遍历的顺序的更多相关文章

  1. js中json数据简单处理(JSON.parse()和js中嵌套html)

    js中json数据简单处理(JSON.parse()和js中嵌套html) 一.总结 1.html中嵌套js:<script>js代码</script> 2.js中嵌套html ...

  2. 关于mysql中字符集和排序规则说明

    文章转自 http://blog.csdn.net/smallSBoy/article/details/52997138 数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set ...

  3. mysql中字符集和排序规则说明

    数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). 一.字符集 字符集,即用于定义字符在数据库中的编码的集合. 常见 ...

  4. 【旧文章搬运】ntfs中的文件名排序规则~

    原文发表于百度空间,2011-04-05========================================================================== 在分析nt ...

  5. anjular中Service、Factory、Provider的使用与js中创建对象的总结

    在学习anjular中Service的使用时,发现和js中的创建对象的方式有一定的联系,所以总结了anjular中Service.Factory.Provider的使用方式与js创建对象的方式 一.先 ...

  6. 基础篇:1.JavaScript运行在html中,引用有几种方式?—— 6.js中常用的输出方式?

    书接上文,上文提到若干条JavaScript的基础性知识,大部分都是一些概念性的东西,本着认真严谨的态度,我们要认真对待,有些条目的问题是某个知识点的周边延伸,为节约篇幅,就一起整理了,如有描述不对的 ...

  7. JavaScript中的this详解(彻底弄懂js中的this用法)!

    要想学好js,那么其中那些特别令人混淆迷惑的知识点,就一定要弄清楚.this关键字就是其中让初学者比较迷惑的知识点之一,不过灵活运用this可以提升代码的性能和复用性,那么今天我就和大家一起来了解th ...

  8. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

  9. form表单的action提交写到js中来,同时onclick事件也写在js中来。其action也可以通过ajax来提交的。

    1,html脚本 <body> <div style="display: none;"> <form id="submitForm" ...

随机推荐

  1. nginx日志文件的配置

    文章来源 运维公会: nginx日志文件的配置 1.日志介绍 nginx有两种日志,一种是访问日志,一种是错误日志. 访问日志中记录的是客户端对服务器的所有请求. 错误日志中记录的是在访问过程中,因为 ...

  2. c# 定制Equals()

  3. python函数式编程-匿名函数

    >>> map(lambda x: x * x, [, , , , , , , , ]) [, , , , , , , , ] 关键字lambda表示匿名函数,冒号前面的x表示函数参 ...

  4. STL的sort函数是使用什么排序算法的?

    先占坑,大概就是主要快速排序+插入排序+堆排序的合体

  5. Aure Event Hubs小白完全入门指南

    refer to https://www.cnblogs.com/mysunnytime/p/11634815.html?from=groupmessage&isappinstalled=0 ...

  6. HTTP 状态码(常见及分析)

    首先得明白状态码的几个大类: 状态码 响应类别 出现原因 1XX 信息性状态码(Informational) 服务器正在处理请求 2XX 成功状态码(Success) 请求已正常处理完毕 3XX 重定 ...

  7. 什么是Log4j,Log4j详解!

    由于时间紧急,自己就不写了.一下转载链接: https://www.cnblogs.com/ITtangtang/p/3926665.html

  8. jquery关于多个显示隐藏

    今天做了一个关于多个栏目的隐藏与显示,内容为初始化显示6个栏目,点击按钮显示所有的栏目,在次点击隐藏出现的栏目 <div class="ftlt_z_navigation acer&q ...

  9. CF436E Cardboard Box(贪心)

    题意 有nnn个关卡,第iii关可以花费aia_iai​的代价打一颗星,bib_ibi​的代价打两颗星.保证1≤ai<bi≤1091\le a_i<b_i\le10^91≤ai​<b ...

  10. spark操作hive方式(scala)

    第一种方式: def operatorHive: Unit = { Class.forName("org.apache.hive.jdbc.HiveDriver") val url ...