我们经常需要求一维数组中的最大值和最小值,有时候还想知道其对应的索引值,通过for循环肯定可以求,但是当数组过大时,考虑到效率问题,会想通过现有的API求,这样不仅效率高,而且代码简洁。
思路:
(1)先根据Math.min.apply函数求数组中的最小值,也可以通过Math.max.apply函数求数组中的最大值;
(2)根据数组中的indexOf 函数,找到最小值或最大值对应的索引值
说明:
- Math.min(arg1, arg2,…)求参数的最小值
- Math.max(arg1, arg2, …)求参数的最大值
- Math.min.apply(null, 数组名): 求数组的最小值,它有两个参数,第一个参数是this指针,通过为null,第二个参数是数组名。Math.max.apply()函数同理
实战:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取数组中的最大值/最小值,并返回索引</title>
</head>
<body>
<script>
let arr = [1, 42, 23, 12, 5, 6, -100, 41]
let minValue, maxValue, minValueIndex, maxValueIndex
minValue = Math.min.apply(null, arr)
minValueIndex = arr.indexOf(minValue)
console.log('数组arr: ' + arr + ' 最小值: ' + minValue + '最小值对应的索引:' + minValueIndex)
maxValue = Math.max.apply(null, arr)
maxValueIndex = arr.indexOf(maxValue)
console.log('数组arr: ' + arr + ' 最大值: ' + maxValue + '最大值对应的索引:' + maxValueIndex)
</script>
</body>
</html>