JS Map对象排序

您所在的位置:网站首页 jq定义map JS Map对象排序

JS Map对象排序

2023-12-20 01:41| 来源: 网络整理| 查看: 265

    JS 中Map对象会按照元素的写入顺序来保存,有时我们想对Map中的对象进行排序应该怎么做呢?参考别人的回答这里做一个小小的总结;

假如有以下map

var map=new Map(); map.set("b","8"); map.set("c","10"); map.set("a","1"); map.set("d","7"); map.set("e","3");

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

var arrayObj=Array.from(map);

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

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

 结果为:

(5) [Array(2), Array(2), Array(2), Array(2), Array(2)] 0: (2) ["a", "1"] 1: (2) ["e", "3"] 2: (2) ["d", "7"] 3: (2) ["b", "8"] 4: (2) ["c", "10"] length: 5 __proto__: Array(0)

如果是想按key排序,只需要更改一下sort方法为

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

结果为:

(5) [Array(2), Array(2), Array(2), Array(2), Array(2)] 0: (2) ["a", "1"] 1: (2) ["b", "8"] 2: (2) ["c", "10"] 3: (2) ["d", "7"] 4: (2) ["e", "3"] length: 5 __proto__: Array(0)

接下来可以这样转换为Map对象:

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

结果为:

Map(5) {"a" => "1", "e" => "3", "d" => "7", "b" => "8", "c" => "10"} size: (...) __proto__: Map [[Entries]]: Array(5) 0: {"a" => "1"} 1: {"e" => "3"} 2: {"d" => "7"} 3: {"b" => "8"} 4: {"c" => "10"} length: 5

参考:

1.  Javascript Sort key value pair object based on value

2.  Convert object array to hash map, indexed by an attribute value of the Object

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3