如何在 JavaScript 中基於迭代器函式在已排序陣列中獲取索引?


迭代器函式用於迭代陣列、列表和其他資料結構。在 JavaScript 中,有多種方法可以獲取應將值插入已排序陣列的索引。

使用 Array sort() 和 indexOf() 方法

sort() 方法可用於按升序或降序對陣列進行排序。預設排序順序為升序,因此,如果要獲取應將值插入已排序陣列的索引,可以使用帶比較函式的 sort() 方法。陣列排序後,我們可以應用 indexOf() 方法來查詢要插入陣列的值的索引。

語法

function compare(a, b) {
   return a - b;
}
arr.sort(compare);
var index = arr.indexOf(num);

比較函式 “compare” 接受兩個引數 a 和 b,如果 a 大於 b,則返回正數;如果 a 小於 b,則返回負數;如果 a 等於 b,則返回 0。arr 是我們要插入值 num 的原始陣列。

演算法

  • 步驟 1 - 定義比較函式。

  • 步驟 2 - 建立名為 arr 的陣列併為其賦值。

  • 步驟 3 - 建立名為 num 的變數。我們需要在陣列 arr 中查詢此元素的索引。

  • 步驟 4 - 使用 arr.sort() 方法根據比較函式對陣列進行排序。

  • 步驟 5 - 使用 arr.indexOf(num) 查詢應在已排序陣列中插入 num 的索引。

  • 步驟 6 - 使用 innerHTML 屬性在視窗螢幕上顯示索引。

示例

例如,如果您有一個數字陣列,並且想要獲取應將給定數字按升序插入陣列的索引,可以使用以下比較程式。

<!doctype html> <html> <head> <title>Examples</title> </head> <body> <h3>Using the Array sort() and indexOf() Methods</h3> <p>The index in the sorted array</p> <div id="result"></div> <script> function compare(a, b) { return a - b; } var arr = [1, 2, 3, 4, 5]; var num = 3; arr.sort(compare); var index = arr.indexOf(num); document.getElementById("result").innerHTML = index </script> </body> </html>

使用 findIndex() 方法

findIndex() 方法可用於查詢陣列中第一個滿足給定條件的元素的索引。例如,如果您有一個數字陣列,並且想要獲取應將給定數字按升序插入陣列的索引,可以使用以下比較函式:

示例

在下面的示例中,我們使用 findIndex() 方法獲取值 num 的索引。

<!doctype html> <html> <head> <title>Examples</title> </head> <body> <h3>Using the findIndex() Method</h3> <p>The index to that the value to be inserted</p> <div id="result"></div> <script> function compare(a, b) { return a - b; } var arr = [1, 2, 3, 4, 5]; var num = 3; var index = arr.findIndex(compare); document.getElementById("result").innerHTML = index </script> </body> </html>

在 JavaScript 中,有多種方法可以獲取應將值插入已排序陣列的索引。您可以使用帶比較函式的 sort() 方法,也可以使用帶比較函式的 binarySearch() 方法。

更新於:2022年8月4日

3K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.