编程练习4-4的问题

编程练习4-4的问题

用随机数生成并添加到数组里以后想要用max和min来获取最大值,但得到的是NaN,应该是代表现在数字是string形式的,那么有什么办法可以既不改变样式 ,同时又把string变成数字来使用math函数呢?

<script>


    function rad(){

        var arr = new Array();

        for(i=0;i<10;i++){

           arr.push(Math.floor(Math.random()*(100-10+1)+10));

        }

        

        var sor=arr.sort();

        var rev=sor.reverse();

        

        var max=Math.max(arr);

        var min=Math.min(arr);

        

        document.write(arr);

        document.write(max);

        document.write(min);

    }

    rad();

</script>


</html>


正在回答

登陆购买课程后可参与讨论,去登陆

8回答

并不是数字是string类型的原因

主要是Math.max方法接收的是一个个参数(args),而你传入的是一个数组(Array)

解决方法可以用es6语法的新特性用三个点展开数组

        var max = Math.max(...arr);
        var min = Math.min(...arr);

具体可以参考扩展语句

DIMwang 2017-05-22 17:00:48

var arr=[],

    random;

    

   for(var i=0;i<10;i++){

    random=Math.floor((100-0+1)*Math.random()+0);

        arr[i]=random;

    }

    newArr=arr.sort(function(a,b){return b-a});


    document.write(newArr);

    document.write('<br />'+'这组中的最大值是:'+Math.max.apply(null,arr)+','+'这组中的最小值是:'+Math.min.apply(null,arr));


慕先生4633558 2017-04-27 14:50:11

直接这样:Math.min.apply(this,[])

qq_世味_0 2017-03-22 12:30:23

成功在对象上再次眩晕

爆炸头shadow 2017-03-19 21:14:06

...很好用哎

aparch 2017-03-07 16:07:41


 function getRandom(n,m){

        return Math.floor((m-n+1)*Math.random()+n);

      }

       function getNumbers(t){

        var numArr=[];

        for(var i=0;i<t;i++){

        numArr[numArr.length]=getRandom(0,100)

        }

        return numArr;

       }

       var num=getNumbers(10).sort(function(a,b){return b-a;});

       document.write(num+"<br>"+"这组数中最大的值是:"+num[0]+", 最小的值是:"+num[num.length-1]);

----------------------------------------------------------------------------------------

在做了降序排列后,第一个肯定是最大值,最后一个肯定是最小值。

  • 你这里那个numArr[numArr.length]是不是应该改成numArr[i] ??? 不太理解你那个numArr[numArr.length],并且上面既然有(var i=0;i<t;i++)下面不应该是numArr[i]吗?
    2017-05-07 19:48:08
  • 不过你这个很好用呀,一面对编程练习很懵逼,不知道怎么去写,我基础太差了~~~
    2017-05-07 19:49:20
  • 这里的写法有很多种,如果你写的对,都是可以的。我一开始也和你一样啊,看到新的写法很新奇,以后接触多了,就知道了。
    2017-05-07 20:12:13
大涧涧dry 2017-02-28 20:13:35

其实有一种很好的解决办法:Math.max.apply(this,var);这个就是用来把参数传到变量中的写法

981126 2017-02-23 11:32:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师