JSP实现字典根据对象值对所有key对象进行排序

5 篇文章 0 订阅
1 篇文章 0 订阅

JSP实现字典根据对象值对所有key对象进行排序

01.排序要求分析

以下是原dic字典数据,由以下数据(可见图一红圈部分)可得到共有3个大key,space1、space2、space3, 3个大key里面分别对应两个子key,jgs 和 space_time_results,要求根据dic的次子key:space_time_results 中的所有Pvalue值大小从小到大排序,其中no即为排序结果对应的大小,别的参数不变,所属关系不变,输出结果如图二。

{“space1”:{“jgs”:[],“space_time_results”:[]},“space2”:{“jgs”:[{“id”:15,“Unit”:“那邦镇”,“lei”:“医疗机构”,“E”:97.559,“N”:24.7542,"
maptype":“GCJ-02”,“ok”:1}],“space_time_results”[{“no”:1,“location_ids”:“1”,“c_id”:1,“c_r”:0,"
TimeCluster":5,“CA”:1,“uA”:0.75,“LGLRA”:0.04755394943117175,“Pvalue”:0.619,“ok”:1},{
“no”:2,“location_ids”:“1”,“c_id”:1,“c_r”:0,“TimeCluster”:6,“CA”:61,“uA”:3.98515,“LGLRA”:111.0141,“Pvalue”:1.466870377E-103,“ok”:1}]},“space3”:{“jgs”:[{“id”:15,“Unit”:“那邦镇”,“lei”:“医疗机构”,“E”:97.559,“N”:24.7542,“maptype”:“GCJ-02”,“ok”:1}],"
space_time_results":[{“no”:1,“location_ids”:“1”,“c_id”:1,“c_r”:0,“TimeCluster”:5,“CA”:1,“uA”:0.75,“LGLRA”:0.047553
94943117175,“Pvalue”:8.4670377E-106,“ok”:1},{“no”:2,“location_ids”:“1”,“c_id”:1,“c_r”:0,“TimeCluster”:6,“CA”:61,“uA”:3.984
630163304515,“LGLRA”:111.0157224293711,“Pvalue”:3.477E-103,“ok”:1}]}}

在这里插入图片描述
图一 dic分析图
在这里插入图片描述
图二 dic排序结果

02.排序完成代码分析

(1)流程图分析:

Created with Raphaël 2.2.0 取字典数据dic 将字典放入数组中 排序key,放入空字典 function(a,b) {return a-b} 赋值空序列 结束

(2)代码实现

<html>
<body>

<script type="text/javascript">
dic ={"space1":{"jgs":[],"space_time_results":[]},"space2":{"jgs":[{"id":15,"Unit":"那邦镇","lei":"医疗机构","E":97.559,"N":24.7542,"maptype":"GCJ-02","ok":1}],"space_time_results":[{"no":1,"location_ids":"1","c_id":1,"c_r":0,"TimeCluster":5,"CA":1,"uA":0.75,"LGLRA":0.04755394943117175,"Pvalue":0.619,"ok":1},{
"no":2,"location_ids":"1","c_id":1,"c_r":0,"TimeCluster":6,"CA":61,"uA":3.98515,"LGLRA":111.0141,"Pvalue":1.466870377E-103,"ok":1}]},"space3":{"jgs":[{"id":15,"Unit":"那邦镇","lei":"医疗机构","E":97.559,"N":24.7542,"maptype":"GCJ-02","ok":1}],"space_time_results":[{"no":1,"location_ids":"1","c_id":1,"c_r":0,"TimeCluster":5,"CA":1,"uA":0.75,"LGLRA":0.04755394943117175,"Pvalue":8.4670377E-106,"ok":1},{"no":2,"location_ids":"1","c_id":1,"c_r":0,"TimeCluster":6,"CA":61,"uA":3.984630163304515,"LGLRA":111.0157224293711,"Pvalue":3.477E-103,"ok":1}]}};

var arr = [];    //建立空数组
var arr2 = {};   //建立空字典
arr.push(dic);   //将原字典数据放入数组中
// alert(JSON.stringify(arr));   测试

for(var i=0;i<arr.length;i++){   // 排序
  alert("arr[i]:"+JSON.stringify(arr[i]));
  for(var key in arr[i]){    //arr[i][key]["space_time_results"] 取出子key,space_time_results
  for(var j=0;j<arr[i][key]["space_time_results"].length;j++){  
         no = arr[i][key]["space_time_results"][j].no
         arr2[key+"-"+no] = arr[i][key]["space_time_results"][j];
    }
  }
}

var sdic=Object.keys(arr2).sort(function(a,b){return arr2[a]["Pvalue"]-arr2[b]["Pvalue"]}); 
//用space_time_results中的Pvalue比较大小排序
for(ki in sdic){ 
    var ki = parseInt(ki);
    var num = ki +1;
    arr2[sdic[ki]]["no"]=num;
} 
  document.writeln(JSON.stringify(dic));
</script>
</body>
</html>

03.实现结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值