1. 程式人生 > 其它 >js中對list陣列資料進行Map資料結構改造 lambda map

js中對list陣列資料進行Map資料結構改造 lambda map

js中對list陣列資料進行Map資料結構改造

後端返回的資料型別是list陣列

  1. [
  2. {
  3. "processStartUser":"1111",
  4. "taskCreateTime":1590634371219,
  5. "taskCompleteTime":1590634371221,
  6. "taskHandler":"1111",
  7. "taskHandlerType":null,
  8. "taskHandlerOpinion"
    :null,
  9. "taskHandlerLink":null,
  10. "taskHandlerDescription":null,
  11. "taskPractitioner":"1111",
  12. "taskId":null,
  13. "taskName":"開始",
  14. "actId":"start",
  15. "actName":"開始",
  16. "process_defined_id":null,
  17. "process_instance_id"
    :null,
  18. "taskAuditStatus":"approving",
  19. "taskStatus":null,
  20. "logisticsNum":null
  21. },
  22. {
  23. "processStartUser":"1111",
  24. "taskCreateTime":1590634371221,
  25. "taskCompleteTime":1590634371236,
  26. "taskHandler":"1111",
  27. "taskHandlerType"
    :null,
  28. "taskHandlerOpinion":null,
  29. "taskHandlerLink":null,
  30. "taskHandlerDescription":null,
  31. "taskPractitioner":"1111",
  32. "taskId":"472718072751329281",
  33. "taskName":"代理商申請",
  34. "actId":"service",
  35. "actName":"代理商申請",
  36. "process_defined_id":null,
  37. "process_instance_id":null,
  38. "taskAuditStatus":"approving",
  39. "taskStatus":null,
  40. "logisticsNum":null
  41. },
  42. {
  43. "processStartUser":"1111",
  44. "taskCreateTime":1590634371237,
  45. "taskCompleteTime":null,
  46. "taskHandler":"劉智慧",
  47. "taskHandlerType":null,
  48. "taskHandlerOpinion":null,
  49. "taskHandlerLink":null,
  50. "taskHandlerDescription":null,
  51. "taskPractitioner":"劉智慧",
  52. "taskId":"472718072835215362",
  53. "taskName":"商務審批",
  54. "actId":"business",
  55. "actName":"商務審批",
  56. "process_defined_id":null,
  57. "process_instance_id":null,
  58. "taskAuditStatus":"approving",
  59. "taskStatus":null,
  60. "logisticsNum":null
  61. },
  62. {
  63. "processStartUser":"1111",
  64. "taskCreateTime":1590634371247,
  65. "taskCompleteTime":null,
  66. "taskHandler":"Lisa",
  67. "taskHandlerType":null,
  68. "taskHandlerOpinion":null,
  69. "taskHandlerLink":null,
  70. "taskHandlerDescription":null,
  71. "taskPractitioner":"Lisa",
  72. "taskId":"472718072860381187",
  73. "taskName":"商務審批",
  74. "actId":"business",
  75. "actName":"商務審批",
  76. "process_defined_id":null,
  77. "process_instance_id":null,
  78. "taskAuditStatus":"approving",
  79. "taskStatus":null,
  80. "logisticsNum":null
  81. },
  82. {
  83. "processStartUser":"1111",
  84. "taskCreateTime":1590634371253,
  85. "taskCompleteTime":null,
  86. "taskHandler":"KiKi",
  87. "taskHandlerType":null,
  88. "taskHandlerOpinion":null,
  89. "taskHandlerLink":null,
  90. "taskHandlerDescription":null,
  91. "taskPractitioner":"KiKi",
  92. "taskId":"472718072885547009",
  93. "taskName":"商務審批",
  94. "actId":"business",
  95. "actName":"商務審批",
  96. "process_defined_id":null,
  97. "process_instance_id":null,
  98. "taskAuditStatus":"approving",
  99. "taskStatus":null,
  100. "logisticsNum":null
  101. },
  102. {
  103. "processStartUser":"1111",
  104. "taskCreateTime":1590634371258,
  105. "taskCompleteTime":null,
  106. "taskHandler":"",
  107. "taskHandlerType":"",
  108. "taskHandlerOpinion":"",
  109. "taskHandlerLink":"",
  110. "taskHandlerDescription":"",
  111. "taskPractitioner":"測試商務",
  112. "taskId":"472718072906518531",
  113. "taskName":"商務審批",
  114. "actId":"business",
  115. "actName":"商務審批",
  116. "process_defined_id":null,
  117. "process_instance_id":null,
  118. "taskAuditStatus":"approving",
  119. "taskStatus":"approvePending",
  120. "logisticsNum":""
  121. }
  122. ]

在js中對list陣列進行Map資料結構的改造

  1. //Map陣列中的key集合陣列
  2. $ctrl.allActList = $ctrl.follow.map(function(item){
  3. return item.actName
  4. })
  5. // key陣列去重
  6. $ctrl.equalList = _.uniq($ctrl.allActList)
  7. // 建立Map並set資料
  8. $ctrl.mapList = new Map()
  9. $ctrl.equalList.map(function(item){
  10. var valueList = []
  11. $ctrl.follow.map(function(e){
  12. if(e.actName == item)
  13. valueList.push(e)
  14. $ctrl.mapList.set(item,valueList)
  15. })
  16. })

對應的HTML中的程式碼

其中在HTML中可以通過$ctrl.mapList.get()獲取值

  1. <div ng-repeat="item in $ctrl.equalList">
  2. <div style="position:relative;overflow:hidden">
  3. <div class="app-line" style="top:20px"></div>
  4. <div class="dib renew-re" style="top:-4px">
  5. <i class="iconfont icon-time circle-gray" ng-show="!item.taskCompleteTime"></i>
  6. <i class="iconfont icon-zhengque circle-yellow" ng-show="item.taskCompleteTime"></i>
  7. </div>
  8. <div class="dib ml20 vertical-top" style="max-width:90%">
  9. <p>{{item}}</p>
  10. <p ng-repeat="e in $ctrl.mapList.get(item)">處理人:{{e.taskHandler}}
  11. <span ng-show="!e.taskHandler">等待稽核</span>
  12. <span ng-show="e.taskHandlerType=='approveReturned'">已退回</span>
  13. <span ng-show="e.taskHandlerType=='approveWithdrawed'">已撤回 撤回環節:{{e.taskHandlerLink}}
  14. </span>
  15. <span>{{e.taskHandlerOpinion}}</span>
  16. <span class="ml10">{{e.taskCompleteTime | date:'yyyy-MM-dd HH:mm:ss'}}</span>
  17. </p>
  18. </div>
  19. </div>
  20. </div>

迴圈list套list比較慢,時間複雜度是m*n,list裡面用Map取比較快,時間複雜度m+n。

https://blog.csdn.net/adoreen/article/details/106401345?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-1-106401345.pc_agg_new_rank&utm_term=js%E5%90%91list%E6%95%B0%E7%BB%84%E6%B7%BB%E5%8A%A0map&spm=1000.2123.3001.4430