在 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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.