我没写Math.max(...arr),Math.min(...arr));的时候返回的是infinity

我没写Math.max(...arr),Math.min(...arr));的时候返回的是infinity

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

</head>

<body>

<script>

    //补充代码

    const arr=[];

    

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

        let a=Math.floor(Math.random()*101)

        arr.push(a);

    }

    console.log(arr.sort(function(x,y)

        {return y-x}),Math.max(...arr),Math.min(...arr));

   

</script>

</body>

</html>


但是前面的循环已经把这十个数放到数组里面了,这十个数不就是一个整体了吗,为什么获取最大最小值的时候要再把这十个数组合起来呢

正在回答 回答被采纳积分+1

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

3回答
好帮手慕久久 2020-12-01 13:38:00

同学你好,这样理解也行,也可以理解成:...就是把数组中的元素拆出来,然后放到Math方法中。

祝学习愉快!

好帮手慕久久 2020-12-01 11:16:22

同学你好,就是因为参数不符合Math.max()的语法要求,所以结果不正确。同学要记住Math.max()的参数形式,使用时按照其语法要求来传参。

祝学习愉快!


  • 提问者 Ting111 #1
    所以你的意思是,循环出来的十个数字放在数组里是1 2 3 4 这样的, ...是用来加逗号的
    2020-12-01 11:21:12
好帮手慕久久 2020-12-01 10:10:23

同学你好,问题解答如下:

1、同学这样写,效果是正确的

2、建议同学把返回infinity的代码粘贴出来,老师根据你的代码,为你解答问题

3、arr.sort(function(x,y){return y-x})这句代码是为了实现将arr排序(从大到小排)

4、Math.max()、Math.min()的参数必须是一个一个的形式,如下:

http://img1.sycdn.imooc.com//climg/5fc5a4dd09dfe98c04620118.jpg

所以需要使用"..."将数组arr的元素打散,传入到Math方法内。如果参数不符合要求,那么就得不到正确的结果。同学返回的infinity,也可能是参数不符合要求造成的。

5、获取最大值、最小值,通常都是在一堆数中查找,比如“有5个数,找到5个数中的最大值”。所以这里获取了十个数。为了练习扩展运算符“...”的使用,所以把数组和Math.max()、Math.min()结合起来了。

祝学习愉快!

  • 提问者 Ting111 #1
    返回infinity的时候我写的Math.max(arr)
    2020-12-01 10:38:52
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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