JavaScript

js的数组,map,或者后台返回hashMap进行排序

集合操作 小海豚博客管理员 2020-06-27 13:34:58.0 421 0条

如果你后台返map对象时,假如是这样的: [result:{“linp”:3306,”opui”:5653,”yui”:123}],那这样的我们应该怎么排序呢

你可以这样:

  1. var map=new Map();
  2. $.each( result[0], function(key, value){
  3. map.set(key,value);
  4. });

现在想根据value从小到大排序,首先转换为数组对象

  1. var arrayObj=Array.from(map);

得到的arrayObj中索引0为map中的key,索引1为map中的value,下面可以采用数组的排序方法

  1. arrayObj.sort(function(a,b){return a[1]-b[1]})

结果为:

(5) [Array(2), Array(2),Array(2)]
0: (2)[“yui”, “123”]
1: (2)[“linp”, “3306”]
2: (2) [“opui”, “5653”]
length: 3
proto: Array(0)
如果是想按key排序,只需要更改一下sort方法为

  1. arrayObj.sort(function(a,b){return a[0].localeCompare(b[0])})

数组可以这样转换为Map对象:

  1. var result = new Map(arrayObj.map(i => [i[0], i[1]));

总结:一般后台是用hashMap封装的,所以返回来时是没有排序好的,我们可以利用这种方式进行排序,当然第一步可以转数组。

暗锚,解决锚点偏移

文章评论

嘿,来试试登录吧!