JavaScript 如何对Map进行排序
在本文中,我们将看到如何根据键的值对Map进行排序。
JavaScript中的Map 是一种特殊类型的对象,按照[key, value]对存储元素。Map可以存储原始类型和对象。在遍历map对象时,它按照插入的顺序返回[key, value]对。
以下是几种方法:
- 使用Map.entries()和sort()方法
- 使用Array.from()和sort()方法
方法1:使用Map.entries()和sort()方法
实现这个目标的一种方法是使用JavaScript中的内置 sort() 函数,该函数在由Map.entries()方法生成的对象的数组解构的多维数组上可用。
语法:
[...map1.entries()]
# this will generate a multi-dimensional array
# out of the key-value pairs stored in the map
现在我们将使用 sort 函数按照默认方式将这个数组按升序排列,它将根据数组中第一个元素的递增值来排序数组。
[...map1.entries()].sort()
示例1: 在这个示例中,我们按键值递增的顺序对地图进行排序。
Javascript
// Initializing and inserting values into Map
let map1 = new Map([
[4, 2],
[2, 3],
]);
// Inserting new element into map using set() method
map1.set(3, 10);
console.log("Our map :");
console.log(map1);
// Adding the sorting logic
map1 = new Map([...map1.entries()].sort());
// Separately printing only keys
for (let [key, value] of map1) {
console.log(key, " ");
}
输出
Our map :
Map(3) { 4 => 2, 2 => 3, 3 => 10 }
2
3
4
示例2: 在此示例中,我们按键的降序排序地图。
JavaScript
let map1 = new Map([
[4, 2],
[2, 3],
]);
// Inserting new element into map using set() method
map1.set(3, 10);
console.log("Our map :");
console.log(map1);
// Adding the custom sorting logic to sort
// by decreasing values of keys
map1 = new Map([...map1.entries()].sort((a, b) => b[0] - a[0]));
// Separately printing only keys
for (let [key, value] of map1) {
console.log(key, " ");
}
输出
Our map :
Map(3) { 4 => 2, 2 => 3, 3 => 10 }
4
3
2
方法2:使用Array.from()和sort()方法
在这个方法中,我们将使用Array.from()将map转换为数组,然后使用sort()函数对map进行排序。在这个方法中,我们将按照值对map进行排序。
示例:
Javascript
let map1 = new Map([
[4, 2],
[2, 3],
]);
// Inserting new element into map using set() method
map1.set(3, 10);
console.log(map1);
// Adding the custom sorting logic to sort
// by decreasing values of keys
const newMap = Array.from(map1).sort((a, b) => a[1] - b[1]);
const sortedMap = new Map(newMap);
console.log(sortedMap);
输出
Map(3) { 4 => 2, 2 => 3, 3 => 10 }
Map(3) { 4 => 2, 2 => 3, 3 => 10 }