js获取数组中最小值的索引

JavaScript0126

js获取数组中最小值的索引,第1张

[20, 50, 6, 100, 80] 如何获取最小值的索引呢?

这个数组可以很明显看出来最小值是6,索引为2,那怎么用js查找出最小值?

那么如何找出数组中的最大值呢,同样的 let max = Math.max(...arr)

纠正一下不是abtn[i].index=i而是aBtn[i].index=i,因为之前定义的是aBtn,js区分大小写。

简单原因其实就是为了保存住每个循环时i的值。

没明白,看下面。

<script type="text/javascript">

window.onload=function() {

var aBtn=document.getElementsByTagName('input')

var arr=['王二','王三','王四']

for (var i = 0i <aBtn.lengthi++) {

aBtn[i].index=i

aBtn[i].onclick=function(){

alert(i)//3

this.value=arr[this.index]

}

/*闭包写法

(function(){

var ii=i//将当前的i值保存到闭包方法中

aBtn[i].onclick=function(){

alert(ii)//0、1、2

this.value=arr[ii]

}

})()

*/

}

}

</script>

<input type="text" /><input type="text" /><input type="text" />

加了个alert就会发现,当点击文本框时,弹出的其实都是3。

原因如下:

首先for执行完成时i的值是3,这个应该知道。

而i的作用域是在整个for中的,也就是说只要在for中改变了i的值,然后alert(i)就是i改变后的值了。

aBtn[i].index=i是将当时循环的i值保存到控件对象上,然后点击时直接获取当前触发的控件对象上的值,所以就能正常获取到0、1、2了。

当然如果不想保存到控件对象,也是有办法实现的,代码中有一个闭包的注释,打开它,去掉for中的其它内容,就可以了,最后实现的效果是一样的。

var arr1 = [1,2,3,4,5,6,8]

var arr2 = [2,1,3,6,4,8,5]

var arr1Index = arr1.indexOf(5)

var arr2Index = arr2.indexOf(8)

alert(arr1[arr1Index])

alert(arr2[arr2Index]) var arr1 = [1,2,3,4,5,6,8]

var arr2 = [2,1,3,6,4,8,5]

for (var i = 0 i < arr1.length i++) {

    alert("arr1 Index:" + i + "arr1值" + arr1[i])

}

arr2.forEach(function(item, index) {

   alert("arr2 Index:" + index + "arr2值" + item)

})