返回 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>

更新於:2022年9月22日

782 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.