JS Map对象如何根据 键 key 倒序和顺序排序?
sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的
由于它取决于具体实现,因此无法保证排序的时间和空间复杂性
语法
arr.sort([compareFunction])
一、按顺序排:
定义以下map
var map = new Map();
map.set("google", "8");
map.set("yahoo", "5");
map.set("msn", "2");
map.set("stackoverflow", "7");
map.set("github", "3");
map.set("amazon", "6");
map.set("ebay", "9");
想根据 key 从小到大排序,首先map转换为数组对象
得到的 arrObj 中索引0为key,索引1为value,然后采用数组的排序方法
var arrObj = Array.from(map);
var result = arrObj.sort(function(a,b){return a[0].localeCompare(b[0])})
输出:按字母从a-z
0: (2) ['amazon', '6']
1: (2) ['ebay', '9']
2: (2) ['github', '3']
3: (2) ['google', '8']
4: (2) ['msn', '2']
5: (2) ['stackoverflow', '7']
6: (2) ['yahoo', '5']
二、按倒序排:
var result = arrObj.sort(function(a,b){return b[0].localeCompare(a[0])})
输出:按字母从z-a
0: (2) ['yahoo', '5']
1: (2) ['stackoverflow', '7']
2: (2) ['msn', '2']
3: (2) ['google', '8']
4: (2) ['github', '3']
5: (2) ['ebay', '9']
6: (2) ['amazon', '6']