如何在JavaScript中排序Map?
在JavaScript中,Map是一種資料結構,它以鍵值對的形式儲存值。它可以儲存所有型別的資料,無論是原始型別還是JavaScript物件。它按照插入元素的順序儲存元素,因此,當我們迭代其元素時,它會按照我們儲存元素的相同順序列印元素。
正如我們所討論的,Map中儲存的元素順序與我們在該Map中插入元素的順序相同。但是,我們也可以根據不同鍵的值按任何順序對Map的元素進行排序。我們可以使用JavaScript的自定義sort()方法根據儲存的鍵值對Map元素進行排序。
語法
下面的語法將向您展示如何在JavaScript中建立一個Map:
var map_name = new Map([...myMap].sort(cmp));
這裡map_name是已排序的Map,myMap是原始Map,cmp是用於比較Map中兩個值的比較函式。
步驟
按照以下步驟在JavaScript中排序Map:
步驟1 - 定義一個包含一些預設值的Map。
var myMap = new Map([ [20, 8], [9, 5], [3, 9], [13, 0], ]);
步驟2 - 定義一個比較函式。此函式用於比較兩個元素。
function cmp(a, b) {
return a[0] - b[0];
}
function cmp(a, b) {
return a[0] - b[0];
}
步驟3 - 使用Map()建構函式從現有的Map myMap建立一個新的物件sortedMap。此步驟包含三個子步驟:
步驟3.1 - 首先,使用展開語法[…myMap]透過將Map myMap的元素展開到陣列中來建立一個數組。
步驟3.2 - 接下來,呼叫sort()函式並傳入比較函式cmp。
步驟3.3 - 最後,使用Map建構函式構造一個新的Map sortedMap。sortedMap包含已排序的陣列。
sortedMap = new Map([...myMap].sort(cmp));
步驟4 - 顯示Map的已排序元素。
現在讓我們透過程式碼示例來了解如何在JavaScript中排序Map:
示例
下面的示例將向您解釋如何按Map中鍵值的升序或遞增順序對Map進行排序:
<html>
<body>
<h2>Sorting keys in a map in JavaScript</h2>
<p id = "prev">The initial order of values of keys in map is:</p>
<p id = "result">The final sorted order of values of keys in map is:</p>
<script>
var result = document.getElementById("result");
var prev = document.getElementById("prev");
var myMap = new Map([
[20, 8],
[9, 5],
[3, 9],
[13, 0],
]);
for (var [key, value] of myMap) {
prev.innerHTML += " <b> " + key + " </b> ";
}
function cmp(a, b) {
return a[0] - b[0];
}
sortedMap = new Map([...myMap].sort(cmp));
for (var [key, value] of sortedMap) {
result.innerHTML += " <b> " + key + " </b> ";
}
</script>
</body>
</html>
在上面的示例中,我們使用了sort()方法,它使用我們用來定義元素排序順序的cmp函式,以升序或遞增順序對元素進行排序。
現在讓我們討論另一個程式碼示例,在這個示例中,我們將按降序或遞減順序對Map的元素進行排序。
方法
此示例和上一個示例的方法幾乎相同,您只需要進行一些小的更改。您需要在上一個演算法中進行的更改是將cmp函式中的返回值從a[0] – b[0]更改為b[0] - a[0]。透過更改此值,它將按遞減或降序對元素進行排序。
示例
下面的示例將說明如何按遞減順序對Map的鍵元素的值進行排序:
<html>
<body>
<h2>Sorting a map in JavaScript</h2>
<p>Enter any two numbers:</p>
<input type = "number" id = "inp1"> <br> <br>
<input type = "number" id = "inp2"> <br> <br>
<button id = "btn" onclick = "mapSort()"> click to sort </button>
<p id = "prev">The initial order of values of keys in map is:</p>
<p id = "result">The final sorted order of values of keys in map is:</p>
<script>
var result = document.getElementById("result");
var prev = document.getElementById("prev");
function mapSort() {
var myMap = new Map([
[20, 8],
[9, 5],
[3, 9],
]);
var inp1 = document.getElementById("inp1");
var inp2 = document.getElementById("inp2");
var val1 = inp1.value;
var val2 = inp2.value;
var num1 = Number(val1);
var num2 = Number(val2);
myMap.set(num1, num2);
for (var [key, value] of myMap) {
prev.innerHTML += " <b> " + key + " </b> ";
}
function cmp(a, b) {
return b[0] - a[0];
}
myMap = new Map([...myMap].sort(cmp));
for (var [key, value] of myMap) {
result.innerHTML += " <b> " + key + " </b> ";
}
}
</script>
</body>
</html>
在上面的示例中,我們透過將cmp函式傳遞給sort()方法,以遞減或降序對Map中儲存的鍵元素的值進行排序,使其首先返回較大的值,然後返回較小的值。
結論
在本文中,我們學習瞭如何使用sort()方法在JavaScript中對Map進行排序。我們已經實際實現了它,並按遞減和遞增順序對Map進行了排序。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP