在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,这确实是正确的。

但是我们要实现的是,如果数组中有多个最小元素,例如上面的数组(三个1s),那么我们应该返回一个包含所有最小元素索引的数组。

因此,对于此数组,我们所需的输出如下:即在索引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 ]