返回 JavaScript 陣列中所有最小元素的索引陣列
在 JavaScript 中,陣列是一個單變數,可以儲存不同的元素。這些元素儲存在連續的記憶體位置。陣列元素可以透過索引號訪問。索引號從 0 開始。
語法
以下是 JavaScript 中陣列的基本宣告:
Cosnt cars = [Maruti, Hyundai, Honda];
我們需要返回 JavaScript 陣列中所有最小元素的索引陣列
讓我們看看輸入輸出場景
假設有一個整數陣列,其中最小元素重複多次。我們需要獲取陣列中最小元素的索引號。
Array = [10, 22, 30, 44, 10, 22, 30, 10, 10]; Output = [0, 4, 7, 8]
使用 Math.min() 函式
執行上述任務的一種方法是使用Math.min()函式、擴充套件運算子 (…)和forEach方法。
Math.min()是 JavaScript 中一個靜態的內建函式,它接受一系列值作為引數,並返回給定系列中的最小值。
<script> document.write(Math.min(23, 32, 441)); </script>
由於 23 是給定值中的最小值,因此此程式碼段會列印值 23(在瀏覽器上)。
但是,問題在於,如果您嘗試將陣列作為引數傳遞給 math.min() 方法,如下所示,它將返回NaN值。
<script> const array1 = [2, 3, 1]; document.write(Math.min(array1)); </script>
我們可以藉助擴充套件運算子 (…) 來解決這個問題。使用擴充套件運算子,我們可以將陣列或字串的元素擴充套件為一系列值。
如果您使用擴充套件運算子將整數陣列傳遞給math.min()方法,則返回給定陣列的最小值。
JavaScript 的forEach()方法允許您對當前陣列中的每個元素執行特定操作。
要獲取最小值(s)的索引號;使用forEach()方法將陣列中的每個元素與最小值進行比較。如果匹配,則列印匹配元素的索引。
示例
以下是一個完整的示例,它返回陣列最小值的索引:
<!DOCTYPE html> <html> <head> <title>Indexes if minimum elements in an array</title> </head> <body> <p id="para"> </p> <h2 id="demo"> </h2> <script> var string = ""; const array = [10, 20, 30, 10, 50, 10, 60, 70]; array.forEach(func); document.getElementById("para").innerHTML ="The indices of the elements present in array are: " + "<br>" +string; function func(curr_item, index_num) { string += index_num + ": " + curr_item + "<br>"; } function MinIndices(array) { var minimum = Math.min(...array); var Min_index = []; array.forEach(function(curr_item, index) { if (curr_item === minimum) { Min_index.push(index); } }); return Min_index; } document.getElementById("demo").innerHTML = "The indices of minimum elements in array are: " + MinIndices(array); </script> </body </html>
正如我們觀察到的,上面程式的輸入陣列中的最小值是10,程式列印了值為 10 的元素的索引。
使用 apply() 方法
我們還可以使用Math.min()函式、apply()方法和forEach方法返回陣列中最小元素的索引。
示例
以下是使用 apply() 方法、forEach方法和 Math.min() 函式的示例:
<!DOCTYPE html> <html> <head> <title>Indexes if minimum elements in an array</title> </head> <body> <p id="para"> </p> <h2 id="demo"> </h2> <script> var string = ""; const array = [1, 8, 9, 5, 23, 1, 34, 8, 5, 1, 9]; array.forEach(func); document.getElementById("para").innerHTML ="The indices of the elements present in array are: " + "<br>" +string; function func(curr_item, index_num) { string += index_num + ": " + curr_item + "<br>"; } function MinIndices(array) { var minimum = Math.min.apply(null, array); var Min_index = []; array.forEach(function(curr_item, index) { if (curr_item === minimum) { Min_index.push(index); } }); return Min_index; } document.getElementById("demo").innerHTML = "The indices of minimum elements in array are: " + MinIndices(array); </script> </body> </html>
在下面的輸出中,最小元素是 1,它在陣列中的三個索引處。因此,它列印陣列中存在 1 的索引。
使用 reduce() 方法
reduce()方法接受一個回撥函式(reducer)作為引數,並將此函式應用於當前陣列的每個元素。通常,其結果將是一個單值。
以下程式碼演示了reduce()方法,在這裡我們使用它來乘以陣列的所有元素並返回結果。
const myArray = [21, 244, 3009, 4221]; const mul = myArray.reduce((pre, curr) => pre * curr, 1); console.log(mul);
上述程式碼段的結果將是65079867636。
示例
以下示例使用 reduce() 方法返回輸入陣列中所有最小元素的索引陣列。
在這裡,我們將Math.min()方法作為 reducer() 的操作傳遞,以便它將檢索當前陣列中元素的最小值。
<!DOCTYPE html> <html> <head> <title>Indexes if minimum elements in an array</title> </head> <body> <p id="para"> </p> <h2 id="demo"> </h2> <script> var string = ""; const array = [0, 7, 9, 10, 17, 18, 33, 45, 54, 99, 83, 0]; array.forEach(func); document.getElementById("para").innerHTML ="The indices of the elements present in array are: " + "<br>" +string; function func(curr_item, index_num) { string += index_num + ": " + curr_item + "<br>"; } const MinIndices = array => { const minimum = array.reduce((acc, val) => Math.min(acc, val), Infinity); const res = []; let i = 0; let len = array.length; for(i; i < len; i++){ if(array[i] !== minimum){ continue; }; res.push(i); }; return res; }; document.getElementById("demo").innerHTML ="The indices of minimum elements in array are: " + MinIndices(array); </script> </body> </html>
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP