在 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 ]
廣告