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