'震惊'过自己的代码

77 阅读1分钟
//求数组中最大值最小值功能,这是我写的代码
        //1.声明函数,加入形参,一个是数组,一个是布尔值
        //数组表示要判断的值,布尔值判断要求最大值还是最小值
        function getNum(arr, flag) {
            //加入一个判断,调用函数后 先判断传进来的是求最大值还是求最小值
            //按照功能要求其实这里,不是true那就是false,所以一个判断条件即可
            if (flag === true) {
                //假设arr[0]是最大值,注意假设声明的变量一定要放在循环的外面!作用域问题!
                let str = arr[0]
                //let i = 1 可以让代码少执行一次 提高效率
                for (let i = 1; i < arr.length; i++) {
                    if (arr[i] > str) {
                        str = arr[i]
                    }
                }
                return `现在数组中的最大值是:${str}`
            } else {
                //变量名str处于else的局部,仍可以用str声明
                //假设arr[0]在false条件下为最小值
                let str = arr[0]
                for (let i = 1; i < arr.length; i++) {
                    if (arr[i] < str) {
                        str = arr[i]
                    }
                }
                return `现在数组中的最小值是:${str}`
            }
        }
        //函数调用,传入值数组和判断条件
        console.log(getNum([60, 20, 30, 40, 50], true))//最大值60
        //这里的false传或不传都可以判断最小值
        console.log(getNum([3, 4, 5, 6, 7, 2], false))//最小值2
//别人写的代码
        function getArrLimit(arr, flag) {
            return flag === true ? Math.max(...arr) : Math.min(...arr)
        }
        console.log(getArrLimit([100, 20, 60, 88, 90], true));//100  
        console.log(getArrLimit([100, 20, 60, 88, 90],));//20  
    </script>