题目要求,封装一个函数,有两个参数数组和布尔值,根据布尔值选择求任意数组的最大值或最小值。
首先分析题目,封装一个函数,这个函数要能求数组最大值也能求数组最小值,而且用布尔值来选择是求最大值还是最小值。
所以是一个求数组最大值和求最小值的for循环,以及一个if判断就可以完成这个函数。
代码如下:
方法一:最容易理解也是最长的一个答案
function getBig (arr, boolean) {
//第一种方法
if (boolean == true) {//if判断
let max = arr[0] //求数组最大值
for (let j = 0; j < arr.length; j++) {
if (max < arr[j]) {
max = arr[j]
}
}
return max;
} else {
let min = arr[0] //求数组最小值
for (let j = 0; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j]
}
}
return min;
}
方法二:根据方法一我们可以看到,两个求数组大小的函数,有很多代码都一致,只有少数地方不一样,所以我们可以合并简洁一下方法一的代码。
function getBig (arr, boolean) {
let num = arr[0]
for (let i = 0; i < arr.length; i++){ //数组的遍历,求数组最大最小值都会有的代码
if (boolean ?arr[i] > num: arr[i] < num) { //三元表达式来判断是否求大小值
num = arr[i]
}
}
return num
}
方法三:最简洁也是最难理解的一种方法
function getBig (arr, boolean) {
let num = arr[0]
for (let i = 0; i < arr.length; i++){
if(boolean == arr[i]>num){ //== 有隐式转换的效果,当布尔值为true时,arr[i]>num是求最大值的
num=arr[i] //当布尔值为false时,arr[i]>num就要变成假的,也就是arr[i]<num,就是求最小
} //值的
}
return num
}
调用时
let num1 = getBig([2, 4, 5, 7], false)
console.log(num1);
大家可以去试试看哦
版权声明:本文为belloc_li原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。