数组中的最小数字和位置

时间:2013-03-16 22:06:05

标签: javascript arrays

我想要实现的是找到数组中的最小数字和初始位置。以下是它应该做的一个例子:

temp = new Array();
temp[0] = 43;
temp[1] = 3;
temp[2] = 23;

所以最后我应该知道3号和1号位置。我也看了一下:Obtain smallest value from array in Javascript?,但这种方式并没有给出数组中的数字位置。任何提示或代码片段都表示赞赏。感谢。

7 个答案:

答案 0 :(得分:14)

只需遍历数组并查找最小数字:

var index = 0;
var value = temp[0];
for (var i = 1; i < temp.length; i++) {
  if (temp[i] < value) {
    value = temp[i];
    index = i;
  }
}

现在value包含最低值,而index包含数组中存在此类值的最低索引。

答案 1 :(得分:6)

您想使用indexOf

http://www.w3schools.com/jsref/jsref_indexof_array.asp

使用之前的代码,来自另一个问题:

temp = new Array();
temp[0] = 43;
temp[1] = 3;
temp[2] = 23;

Array.min = function( array ){
    return Math.min.apply( Math, array );
};

var value = temp.min;
var key = temp.indexOf(value);

答案 2 :(得分:4)

一衬垫:

alist=[5,6,3,8,2]

idx=alist.indexOf(Math.min.apply(null,alist))

答案 3 :(得分:1)

请参阅此问题的“find max”版本的this answer。它简单而且好。您可以使用索引来获取元素。

答案 4 :(得分:1)

您可以使用reduce并与Manage Connection进行比较。

Infinity

在第一种情况下,将索引分配给外部变量,您将知道该索引。

答案 5 :(得分:0)

这是使用简单递归的解决方案。输出是一个包含最小编号和最小编号本身的索引位置的对象

const findMinIndex = (arr, min, minIndex, i) => {
  if (arr.length === i) return {minIndex, min};
  if (arr[i] < min) {
    min = arr[i]
    minIndex = i;
  }
  return findMinIndex(arr, min, minIndex, ++i)

}

const arr = [5, 5, 22, 11, 6, 7, 9, 22];
const minIndex = findMinIndex(arr, arr[0], 0, 0)
console.log(minIndex);

答案 6 :(得分:0)

使用 Math.min 和展开运算符找到最小值:

var minimumValue = Math.min(...temp);

然后使用 indexOf 查找索引:

var minimumValueIndex = temp.indexOf(minimumValue);

我个人更喜欢传播运算符而不是 apply

相关问题