在 JavaScript 中查找数组中多个最小值的索引

javascriptweb developmentfront end technologyobject oriented programming

假设我们有一个像这样的数字数组 −

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 ]

相关文章