在 JavaScript 中查詢陣列中多個最小值的索引


假設我們有一個這樣的數字陣列:

const arr = [1,2,3,4,1,7,8,9,1];

假設我們想要找到陣列中最小的元素的索引,即上面的 1。

為此,我們可以簡單地使用:

const min = Math.min.apply(Math, arr);
const ind = arr.indexOf(min);

以上程式碼將成功地將 ind 設定為 0,這確實是正確的。

但我們想要實現的是,如果陣列中存在多個最小元素,例如上述陣列(三個 1),那麼我們應該返回一個包含所有最小元素索引的陣列。

因此,對於此陣列,我們期望的輸出如下,即在索引 0、4 和 8 處找到三個 1:

const ind = [0, 4, 8]

我們需要編寫一個 JavaScript 函式,它接收一個數字陣列作為輸入,並返回陣列中所有最小元素的索引陣列。

示例

以下是程式碼:

const arr = [1,2,3,4,1,7,8,9,1];
const minArray = arr => {
   const min = arr.reduce((acc, val) => Math.min(acc, val), Infinity);
   const res = [];
   for(let i = 0; i < arr.length; i++){
      if(arr[i] !== min){
         continue;
      };
      res.push(i);
   };
   return res;
};
console.log(minArray(arr));

輸出

這將在控制檯中產生以下輸出:

[ 0, 4, 8 ]

更新於: 2020-09-18

544 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告