【js小品一则】三种方法封装一个根据布尔值求数组最大值或最小值的函数。第三种你绝对想不到。

  • Post author:
  • Post category:其他




题目要求,封装一个函数,有两个参数数组和布尔值,根据布尔值选择求任意数组的最大值或最小值。

首先分析题目,封装一个函数,这个函数要能求数组最大值也能求数组最小值,而且用布尔值来选择是求最大值还是最小值。

所以是一个求数组最大值和求最小值的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 版权协议,转载请附上原文出处链接和本声明。