请问哪里不对

请问哪里不对

<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

    <title>数组</title>

</head>


<body>

    <script>

        var arr=[];

        var input;

        while (input!='-1') {

            input=Number(prompt('请输入数字'));

            arr.push(input);

        }

            arr.pop();

            arr.sort();


        document.write(arr);

    </script>

</body>


</html>


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

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

3回答
好帮手慕久久 2021-06-04 15:55:06

同学你好,解答如下:

由于同学没有将结果输出,所以看不到最终的结果。建议使用console.log将结果输出到控制台,如下:

http://img1.sycdn.imooc.com//climg/60b9dbf3098e012a07340367.jpg

http://img1.sycdn.imooc.com//climg/60b9dc0009222df006220215.jpg

优化建议:

input不用重复使用var声明,声明一次即可:

http://img1.sycdn.imooc.com//climg/60b9dc350979a33707700331.jpg

祝学习愉快!

好帮手慕久久 2021-03-25 18:43:11

同学你好,解答如下:

1、while循环,是用来往变量arr中,追加数据的(循环一次,就追加一个数据)。当退出while循环时,得到的变量arr里面,会包含之前输入的所有内容。由于终止while循环的条件是输入-1,而最后输入的“-1”,也会被追加到变量arr里(是arr最后一个元素),由于-1是没用的数据(不需要-1),所以要删除(pop方法就是用来删除-1的)。因此要在while循环结束后,删除input中的-1,即pop要写在while外面(pop方法的意思是,删除数组最后一个元素)。而排序,也是对所有的数据排序,所以也要写在循环外:

http://img1.sycdn.imooc.com//climg/605c60f609ae9fa306930362.jpg

2、由于输入的内容已经被转成了数字,所以条件应该写成input!=-1

http://img1.sycdn.imooc.com//climg/605c618c0997942c06560158.jpg

而写成input != '-1'之所以也能运行正确,是因为js在判断该式子时,会把等号两侧都转成同一类型(字符串或数字)再比较,因此当input是-1时,-1!=-1与-1!=“-1”的结果是相同的(特殊点,记住即可)。

3、条件不能写成input==-1。只有当条件满足时,才会开启循环,而我们的条件是“当输入的内容不是-1时”,所以条件要写成input !=-1(输入-1是结束条件)。

祝学习愉快!

  • 提问者 神知 #1

    老师我写的这个为什么输出是空,哪里不对?

    <script>

            arr=[];

            var input;

            while(input!=-1){

                var input=Number(prompt('请输入想排序的数字'));

                arr.push(input);

            }

            arr.pop();

            arr.sort(function(x,y){return y-x});

    </script>


    2021-06-04 14:43:55
  • 老师还是不懂,为什么最后输入的-1还会插入到arr数组中,while循环不是根据条件来判断,再执行语句,那当输入-1时候,已经不满足循环条件:input!=-1,此时不是直接结束循环,-1就不会插入arr数组吗?怎么还会插入进去

    搜索

    复制

    2022-02-25 18:08:05
  • 还是不懂为什么-1会插入arr数组中

    搜索

    复制

    2022-02-25 18:08:56
好帮手慕张 2021-03-04 18:47:58

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

测试代码效果为:输入的数字都是按照升序输出在页面的

原因:sort方法默认是升序排列的

修改:js内置sort方法默认是按照升序排序的。默认升序就是x-y,降序排序的话就是 y-x 。具体代码修改如下:

http://img1.sycdn.imooc.com//climg/6040bad40926ee3c05960228.jpg

​祝学习愉快!

  • 提问者 神知 #1

        arr.pop();

        arr.sort(function (xy){

            return y - x;

        }

        );

    这两句为什么要写在while外面?

    input='-1'为什么要加引号

    如果写成input==-1里面代码该怎么写呀?

    2021-03-25 16:54:38
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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