关于一个数组的取出最大值和最小值的问题

代码如下


        var b = [99,1,2,4,3,5,8,6,7,9,0,34,56,78,98,45,23,45,23.45];

        function shuffle(arr){

            return arr.sort(function(){

                return Math.random() - 0.5;

            });

        }

        var a = shuffle(b);

        console.log(a);

        var max = a[0];

        var min = a[0];

        var maxindex = 0;

        var minindex = 0;

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

            if(max<a[i]){

                max = a[i];

                maxindex = i;

            }else if(min>a[i]){

                min = a[i]

                minindex = i;

            }

        }

        console.log(max==a[maxindex]);

        console.log(min==a[minindex]);

这段代码的判断感觉不是太正确,但是说不上来哪里出错了,结果是正确的,每次计算前都会打乱顺序

一般正常逻辑这样写代码:

https://img3.mukewang.com/5c68ffdb0001452905200442.jpg

烙印99
浏览 480回答 1
1回答

当年话下

区别分析:// 代码一:这段代码不够优化if (max < a[i]) {&nbsp; max = a[i];&nbsp; maxindex = i;}// 首先,max >= min(这是一定的)// 所以当 max < a[i]时,// 就会有min <= max < a[i] => min < a[i],// 即是不可能 min > a[i]// 所以 if (max < a[i])和if (min > a[i])不可能同时执行// 所以这两个 if 可以合并到下面的 if(max < a[i]) else if(min > a[i])if (min > a[i]) {&nbsp; min = a[i]&nbsp; minindex = i;}// 代码二:这段代码更好if (max < a[i]) {&nbsp; max = a[i];&nbsp; maxindex = i;} else if (min > a[i]) {&nbsp; min = a[i]&nbsp; minindex = i;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript