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

xiaoxiao2025-10-20  5

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.实现结果

转载请注明原文地址: https://www.6miu.com/read-5038227.html

最新回复(0)