我想要实现的是找到数组中的最小数字和初始位置。以下是它应该做的一个例子:
temp = new Array();
temp[0] = 43;
temp[1] = 3;
temp[2] = 23;
所以最后我应该知道3号和1号位置。我也看了一下:Obtain smallest value from array in Javascript?,但这种方式并没有给出数组中的数字位置。任何提示或代码片段都表示赞赏。感谢。
答案 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
。