zoukankan      html  css  js  c++  java
  • 项目中一次排序规则的改动,注意到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进行了字母顺序排序。

  • 相关阅读:
    js编码中常用的知识点
    oracle函数的使用
    oracle 临时表的使用
    oracle11G归档日志管理
    oracle中 高水位线详解
    oracle并行模式(Parallel)
    oracle常用函数详解(详细)
    oracle系统表的查询
    15000 字的 SQL 语句大全
    oracle_单引号问题和execute immediate 赋值问题
  • 原文地址:https://www.cnblogs.com/diaoyan/p/11592454.html
Copyright © 2011-2022 走看看