js练习题

时间:2024-11-21 13:16:31

js练习题

  1. 获取1-100之间的所有偶数
<script>
for(var i = 1;i <= 100;i++){
            if(i % 2 == 0){
                console.log(i);
            }
         }

         for(var a = 2;a <= 100;a+=2){
            console.log(a);
         }
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 计算1-100的积
<script>
    var num = 1;
        for(var n = 1; n<= 10;n++){
            num *= n;
           // (num,n);
        }
        console.log(num);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配?
<script>
     var n = 0;

        for(var x = 0;x <= 100;x++){
            for(var y = 0;y <= 100;y++){
                for(var z = 0;z <= 100;z++){
                    if(x + y + z == 100 && x * 2 + y + z / 2 == 100){
                        // (`大马${x}匹; 中马${y}匹; 小马${z}匹`);
                        n++;
                    }
                }
            }
        }

        console.log(n);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  1. 公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
<script>
    var a = 1;
        for(var i = 1;i < 7;i++){
            a = (a + 1) * 2;
        }
        console.log(a);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 1~100之间不能被3整除的数之和
<script>
    // 声明一个变量,用于存储所有满足条件的数之和
         var sum = 0;
         // 1~100 循环  不能被3整除的数 判断条件 之和 运算符
         // 找出1~100之间所有的数字
         for(var i = 1; i <= 100; i++){
             // 判断不能被3整除的数 取模 %  i对3取模 为0
            if(i % 3 != 0){
                // 累加 +=
                sum += i;  // 当i为1时,sum = 0+1; 当i为2时,sum = 1+2,...
            }
        }

        alert('1~100之间不能被3整除的数之和是' + sum);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  1. 输入显示的次数,按照你输入的次数显示“班训:快乐学习,认真生活!”,应该怎么写?
<script>
     // 输入显示次数 prompt() 需要存储起来你输入的值 循环
        // 输入显示次数
         var num = prompt('请输入显示次数:') * 1;

         // 循环范围 0-num
         for(var i = 0; i < num; i ++){
             document.write('班训:快乐学习,认真生活!<br />');
         }
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 循环录入Javascript课的学生成绩,统计分数大于等于 80分的学生比例

    分析

    1. 通过循环,获得分数大于等于80分的学生人数num
    2. 判断:如果成绩**<80**,不执行num++,直接进入下一次循环
<script>
    // 循环 prompt 大于等于 80分 条件 学生比例 
        // 满足条件的总人数和班级总人数
        // 输入班级总人数
         var sumNum = prompt('请输入班级总人数:');
         // 满足条件的总人数初始化
         var num = 0;
         // 循环所有学生
         for(var i = 0; i < sumNum; i++){
             // 大于等于 80分
             var score = prompt('请输入第' + (i + 1) +'位同学的成绩:');
             if(score >= 80){
                 num++;
             }
         }
         //输出满足条件的学生的比例
         document.write('分数大于等于80分的学生比例是:' + num/sumNum)
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  1. 香蕉3元一个,橘子2元一个,草莓1元一个。现在想用200元买100个水果,在浏览器中列出所有可能性。
<script>
     // 第一种方法
     // banana 0~100 香蕉的个数, 
        // orange 0~100 橘子的个数, 
        // stawberry 0~100 草莓的个数
        // banana * 3 + orange * 2 + strawberry * 1 = 200
        // banana + orange + strawberry = 100
         for(var banana = 0; banana <= 100; banana++){
             for(var orange = 0; orange <= 100; orange++){
                 for(var strawberry = 0; strawberry <= 100; strawberry++){
                     if(banana * 3 + orange * 2 + strawberry * 1 == 200 && banana + orange + strawberry == 100){
                         document.write('你可以买' + banana + '个香蕉; ' + orange + '个橘子; ' + strawberry + '个草莓; <br />')
                     }
                 }
             }
         }

        /*
            第二种方法
            banana * 3 + orange * 2 + strawberry * 1 = 200
            banana + orange + strawberry = 100

            banana * 2 + orange = 100
            orange = 100 - banana * 2

            banana +  100 - banana * 2 + strawberry = 100
            strawberry = banana

            banana + strawberry <= 100
            banana <= 50  // 循环条件
        */
         var orange, strawberry;

         // 所有香蕉个数的可能性
        for(var banana = 0; banana <= 50; banana++){
             orange = 100 - banana * 2;
             strawberry = banana;

             document.write('你可以买' + banana + '个香蕉; ' + orange + '个橘子; ' + strawberry + '个草莓; <br />')
        }
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  1. 会员卡四位数求和, 第一个数字大于0,会员卡四位数求和大于20时将返利50元,否则不返利。
<script>
     // 先输入会员卡prompt, 会员卡四位数求和 大于20 
        // 先输入会员卡号
        // 取一个四位数中的个,十,百,千位上面的数字
        // var num = 2356;
        // var q =  parseInt(num / 1000); // 千位
        // var b =  parseInt((num - q * 1000)/100); // 百位
        // var s =  parseInt((num - q * 1000 - b * 100) / 10); // 十位
        // var g =  num - q * 1000 - b * 100 - s * 10; // 各位
        // 2356/1000  2.356  parseInt(2.356)
        // 2356-q*1000 356
        // (g); 
        // (parseInt((num - q * 1000)/100));  // 期望值是3

         var cardNum = prompt('请输入您的会员卡号:');  

         // 拿到四位数
         var q =  parseInt(cardNum / 1000); // 千位
         var b =  parseInt((cardNum - q * 1000)/100); // 百位
         var s =  parseInt((cardNum - q * 1000 - b * 100) / 10); // 十位
         var g =  cardNum - q * 1000 - b * 100 - s * 10; // 各位

         if(q + b + s + g > 20){
             alert('恭喜您,您可以获得50元的返利!');
         } else{
             alert('很遗憾,您没有满足返利的条件!')
         }
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  1. 工资所得税工资超过3000的部分需要缴纳个人所得税,输出税后工资(税率为0.05)。
<script>
    // 输入您的工资
         var pay = prompt('输入您的工资');

         // 判断是否满足交税的条件
         if(pay > 3000){
             // 计算你拿到的实际工资
             // pay - (pay-3000) * 0.05
             alert('你拿到的实际工资是:' + (pay - (pay-3000) * 0.05))
         }
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 用户购买商品,三个商品中有一个超过50元,或者总价超过100元,即可以打八五折,否则不打折。
<script>
    // 三个商品prompt  一个超过50元,或者总价超过100元 条件
        // 输入商品
         var goods1 = prompt('请输入第一个商品的价格:') * 1;
         var goods2 = prompt('请输入第二个商品的价格:') * 1;
         var goods3 = prompt('请输入第三个商品的价格:') * 1;

         if(goods1 > 50 || goods2 > 50 || goods3 > 50 || goods1 + goods2 + goods3 > 100){
             alert('您需要支付:' + (goods1 + goods2 + goods3) * 0.85);
         } else{
             alert('您需要支付:' + (goods1 + goods2 + goods3));
         }
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. 计算1!+2!+3!+…+10!的结果.
<script>
     // 1! 1 2! 2*1 
        // 计算阶乘 计算10的阶乘  10! 10 * 9 *8 ..*1 累乘
         var sum = 1;
         for(var i = 1; i <= 4; i++){
             sum *= i; // 1*1 1*1*2*3
         }


        // 这是所有阶乘之和
         var sumNum = 0;
         // 循环阶乘累加
         for(var i = 1; i <= 10; i++){
            // 这是每一个阶乘的值
             var sum = 1;
             // 各个阶乘相加 当i为1时,1!,当i为2是,2!...
             for(var j = 1; j <= i; j++){
                 sum *= j; // 1*1 1*1*2*3
             }

             // 累加每个阶乘
             sumNum += sum;
         }

         alert('1!+2!+3!+…+10!的结果是:' + sumNum);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  1. 输出所有满足下列条件的四位整数。条件:个位数字加百位数字等于千位数字加上十位数字,且该四位数为奇数。
<script>
     // 1000 ~ 9999 循环 个位数字加百位数字等于千位数字加上十位数字,且该四位数为奇数 条件
        // var q =  parseInt(cardNum / 1000); // 千位
        // var b =  parseInt((cardNum - q * 1000)/100); // 百位
        // var s =  parseInt((cardNum - q * 1000 - b * 100) / 10); // 十位
        // var g =  cardNum - q * 1000 - b * 100 - s * 10; // 各位
         var q, b, s, g;
         document.write('所有满足下列条件的四位整数 <br>')
        // // 找到所有四位数 1000 ~ 9999 
         for(var i = 1000; i <= 9999; i++){
             q =  parseInt(i / 1000); // 千位
             b =  parseInt((i - q * 1000)/100); // 百位
             s =  parseInt((i - q * 1000 - b * 100) / 10); // 十位
             g =  i - q * 1000 - b * 100 - s * 10; // 各位

             // 判断个位数字加百位数字等于千位数字加上十位数字
             // 该四位数为奇数 
             if(g + b == q + s && i % 2 != 0){
                 document.write(i + '<br />')
             }
         }
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  1. 求1~10之间的所有偶数和。
<script>
     //1~10 循环 偶数 条件
        // 存储满足条件的和的变量
        var sumNum = 0;
        // 循环1~10
        for (var i = 1; i <= 10; i++) {
            //是否是偶数
            if (i % 2 == 0) {
                sumNum += i;
            }
        }
        alert('1~10之间的所有偶数和是:' + sumNum);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. 随机输入一个年份,判断是闰年还是平年,并说出今年2月份有多少天?
<script>
     // 闰年:它可以被400整除,或者被4整除,同时不能被100整除
        var year = prompt('请输入年份');

        function isPrimeYear(year) { // year 2019
            if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
                alert(year + '就是闰年');
                return true;
            } else {
                alert(year + '就是平年')
                return false;
            }
        }

        // 调用函数
        // (isPrimeYear(year));

        // 给你一个年份,请你告诉我今年2月份有多少天
        // 如果是闰年,2月份就是29天,如果是平年,2月份就是28天
        function getDays(year) { // year 2019
            if (isPrimeYear(year)) { // year 2019
                alert('今年的2月份有29天');
            } else {
                alert('今年的2月份有28天');
            }
        }

        // 调用函数getDays,获取这一年2月份的天数
        getDays(year);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  1. 时钟案例
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="clock"></div>

    <!-- 加载完成以后在加载js,减少页面的空白时间 -->
    <script>
        // 获取dom节点
        var clock1 = document.getElementById('clock');

        // 封装函数
        function clockFunc() {
            // 获取当前时间
            var date = new Date();
            // 年份 YY 月份 MM 日期 DD 星期 dd 小时 hh 分钟 mm 秒 ss
            // 获取年份
            var YY = date.getFullYear();
            // 获取月份 注意加1
            var MM = date.getMonth() + 1;
            // 获取日期
            var DD = date.getDate();
            // 获取星期几
            var dd = date.getDay();
            // 获取小时
            var hh = date.getHours();
            // 获取分钟
            var mm = date.getMinutes();
            // 获取秒
            var ss = date.getSeconds();

            // 格式化星期几
            switch (dd) {
                case 0:
                    dd = '星期日';
                    break;
                case 1:
                    dd = '星期一'
                    break;
                case 2:
                    dd = '星期二'
                    break;
                case 3:
                    dd = '星期三'
                    break;
                case 4:
                    dd = '星期四'
                    break;
                case 5:
                    dd = '星期五'
                    break;
                case 6:
                    dd = '星期六'
            }

            // 十二进制
            if (hh > 12) {
                hh = ' PM ' + strFunc(hh - 12);
            } else {
                hh = ' AM ' + strFunc(hh);
            }

            // 想要向id为clock的标签内部添加内容innerHTML
            //  = "56565";
            clock1.innerHTML = '当前时间为:' + YY + ' 年 ' + MM + ' 月 ' + DD + ' 日 ' + dd + hh + ' : ' + strFunc(mm) + ' : ' + strFunc(ss);
        }

        // 添加0的函数
        function strFunc(num) {
            if (num < 10) {
                num = '0' + num;
            }

            return num;
        }

        // 定时器
        var timer = setInterval('clockFunc()', 1000);
    </script>
</body>

</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  1. 在一个函数中输入最大值(min)和最小值(max), 请返回最大值与最小值之间有几个质数。

    思路: 先写一个判断是否是质数的函数

<script>
    // 先判断是否为质数,判断一个值是否为质数,需要一个形参将值传进函数中
        // 如果是一个质数,返回true
        function isPrimeNumber(num){
            // 质数,只能被1和自身整除的自然数,1不是质数也不是合数
            if(isNaN(num) || num <= 1){
                return false;
            } else{
                // flag如果为true说明,是一个质数,反之,不是质数
                // 初始化认为他是一个质数
                var flag = true;

                // 3 是否能被2整除, 4 判断是否能被2,3, 5判断2,3,4
                for(var i = 2; i < num; i++){ // 9, 
                    // 判断是否为质数
                    // 如果该数值能够被它前面的除1之外的任一个数字整除,
                    // 就说明他不是一个质数
                    if(num % i == 0){  
                        flag = false;
                        // alert('你是一个质数!')
                    }
                }

                return flag;
            }
        } 

        // 要判断最小值与最大值直之间有几个质数
        // 最大值 max 最小值 min
        function getPrimeNum(min, max){
            // 存放min到max之间所有质数的个数的变量
            var sumNum = 0;
            // 先获取min到max的所有的数
            for(var i = min; i <= max; i++){
                // 判断i是质数
                if(isPrimeNumber(i)){ // isPrimeNumber(i)要么是true,要么是false
                    sumNum ++;
                }
            }

            // 将min到max之间所有质数的个数返回给函数
            return sumNum;
        }

        alert(getPrimeNum(1, 72));//1~72之间有多少个质数
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  1. 封装斐波那契数列的函数, 可以查询到第几位的斐波那契数列的值是多少
<script>
     // 1. 斐波纳契数列
         function cci(n){  // 第n项
             if(isNaN(n) || n < 1){
                 return n;
             } else if(n <= 2){
                 return 1;
             } else{
                 // 存储第n项的数字
                 var num;
                 // 第n-2项的数字
                 var num1 = 1; // 1,2..
                 // 第n-1项的数字
                 var num2 = 1; // 2,3..
                 for(var i = 3; i <= n; i++){
                     // 获取到第n项的数字
                     num = num1 + num2;
                     // 更新n-2项,将原来的n-1项的内容,赋值给n-2项
                     num1 = num2; 
                     // 更新n-1项,,将原来的n项的内容,赋值给n-1项
                     num2 = num;
                 }

                 // 第n项的值
                 return num;
             }
         }

         alert(cci(7));//13

        // 2. 递归
        function cci(n){
            if(isNaN(n) || n < 1){
                return n;
            } else if(n <= 2){
                return 1;
            } else{
                return cci(n-1) + cci(n-2);
            }
        }
		alert(cci(7));//13
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  1. 编写函数validateCode(n),该函数实现随机产生n位数字构成的验证码,并返回该验证码。
<script>
     // 产生n位数字组成的验证码
        // 返回这个验证码
        function validateCode(n){
            // 初始化存放验证码的变量
            var str = '';
            // n位数
            for(var i=0; i<n; i++){
                // 随机数 () 0~1
                // 你需要 0~10 不包含10 ()*10
                // ()*10这个取得值为小数,转换成整数
                // 向下取整 (()*10)
                // ((()*10));
                str += Math.floor(Math.random()*10);
            }

            return str;
        }

        document.write(validateCode(5));//随机的5位数字组成的验证码
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  1. 在网页上输出:今天是:XXXX年XX月XX日 星期X 距离2021年五一还有XX天。
<script>
     // 获取当前时间
        var today = new Date();
        // 获取年份
        var YY = today.getFullYear();
        // 获取月份, 加1
        var MM = today.getMonth() + 1;
        // 获取日期
        var DD = today.getDate();
        // 获取星期几,0-6
        var dd = today.getDay();
        // 获取当前时间的时间戳
        var startTime = today.getTime();

        // 格式化星期几
        switch (dd) {
            case 0:
                dd = '星期日';
                break;
            case 1:
                dd = '星期一'
                break;
            case 2:
                dd = '星期二'
                break;
            case 3:
                dd = '星期三'
                break;
            case 4:
                dd = '星期四'
                break;
            case 5:
                dd = '星期五'
                break;
            case 6:
                dd = '星期六'
        }

        // 距离2021年5月1日还有多少天, 获取两边的时间戳
        // 你可以直接在new Date(参数)中加参数
        var endDate = new Date();
        // 设置年份为2021
        endDate.setFullYear(2021);
        // 设置月份为5月,传4进去
        endDate.setMonth(4);
        // 设置日期为1日
        endDate.setDate(1);
        // 获取2021年5月1日的时间戳
        var endTime = endDate.getTime();

        // 获取剩余时间,单位毫秒
        var leftTime = endTime - startTime;
        var leftDays = leftTime / 1000 / 60 / 60 / 24;

        document.write("今天是:" + YY + "年" + MM + "月" + DD + "日 "+ dd +" 距离2021年五一还有"+ leftDays +"天。")
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  1. 将数组[‘香蕉’, ‘苹果’, ‘橘子’, ‘梨’, ‘草莓’]进行反转为[‘草莓’, ‘梨’, ‘橘子’, ‘苹果’, ‘香蕉’]
<script>
    // 第一种做法
    var arr = ['香蕉', '苹果', '橘子', '梨', '草莓'];
        // 创建一个新数组,用于存放反转之后的元素
        var arr1 = [];
        // 遍历数组
        for(var i=arr.length-1; i>=0; i--){
            arr1.push(arr[i]);
        }
        console.log(arr1)
	// 第二种做法
	var arr = ['香蕉', '苹果', '橘子', '梨', '草莓'];
		console.log(arr.reverse());
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 新建数组MyArr并赋值’A’,‘B’,‘C’,新建数组MyArr2并赋值’J’,‘K’,‘L’,将数组MyArr和MyArr2合并为MyArr3,并输出MyArr3数据到页面,删除MyArr3中第一个元素和最后一个元素,并输出MyArr3数据到页面。
<script>
    var myArr = ['A','B','C'];
        var myArr2 = ['J','K','L'];
        // 创建一个新的数组
        var myArr3 = [];
        // 封装函数
        function createArr(arr, newArr){
            for(var i=0; i<arr.length; i++){
                newArr.push(arr[i]);
            }
        }
        // 遍历数组myArr
        // for(var i=0; i<; i++){
        //     (myArr[i]);
        // }
        createArr(myArr, myArr3);
        // 遍历数组myArr2
        // for(var i=0; i<; i++){
        //     (myArr2[i]);
        // }
        createArr(myArr2, myArr3);
        document.write(myArr3 + '<br />');
        // 删除第一个元素
        myArr3.shift(); 
        // 删除最后一个元素
        myArr3.pop();
        document.write(myArr3);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  1. 使用数组接收用户输入的3个学生7门课程的成绩,然后在页面上显示每个学生的姓名,总成绩和平均分,并列出小于60的成绩
<script>
    // 创建数组用于存放学生
        var stuList = [];
        for(var i=1; i<=3; i++){
            var stu = prompt('请输入第' + i +'位学生的姓名:', '李雷');
            // 将小于60的成绩拼接成一个字符串
            var lowerScoreStr = '';
            // 定义一个变量存储总成绩
            var sumScore = 0;
            for(var j=1; j<=4; j++){
               var score = prompt('请输入' + stu + '第' + j +'门成绩:', '80') * 1;
                // 每位同学的总成绩
                sumScore += score;
                // 判断小于60的成绩
                if(score<60){
                    lowerScoreStr += '成绩' + j + "是" + score;
                }
            }
            document.write(stu + '的总成绩为:' + sumScore + '分,平均成绩是:' + sumScore/4 + '分, 小于60的成绩有:' + lowerScoreStr + '<br />')
        }
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  1. 编写去重程序,将数组[1, 2, 6, 8, 1, 2, 66, 2, 12]中重复的元素去掉
<script>
     // 数组去重 第一种方法
        // 数组初始化
        var arr = [1, 2, 6, 8, 1, 2, 2, 2, 66, 2, 12];
        // 遍历数组
        // 1 与 1后面所有元素进行比较
        for (var i = 0; i < arr.length; i++) {
            // i 与 i后面所有元素进行比较 i+1~-1
            for (var j = i + 1; j < arr.length; j++) {
                // 判断是否是重复的元素
                if (arr[i] == arr[j]) {
                    // 删除2以后,后面元素补位上来,
                    // 这个位置上的元素,被认为已经比较过了,
                    // 所以你补位上来的元素没有做判断
                    arr.splice(j, 1);
                    // 就是将被删除的位置,再重新判断一遍
                    j--;
                }
            }
        }
        console.log(arr);
	// 第二种方法
		 var arr = [1, 2, 6, 8, 1, 2, 2, 2, 66, 2, 12];
		 // 用于存放新的已经去重以后的数组
            var newArr = [];
            // 遍历数组
            for(var i=0; i<arr.length; i++){
                // 判断在新数组中,arr[i]是否存在
                 if(newArr.indexOf(arr[i]) == -1){
                      // [1], i=1, [1, 2]; i=2
                     newArr.push(arr[i]);
                 }
            }
            console.log(newArr);
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  1. 创建一个电脑对象,要求这个对象有品牌,颜色,重量,型号,还可以看电影,打游戏,敲代码

    分别使用今天讲的三种创建对象的方法实现

<script>
     // 字面量方式创建对象
        /* 
           语法: var 对象名 = {
               属性名: 属性值
           };
         */
         var computer = {
             brand: '小米',
             color: '太空灰',
             weight: '2kg',
             model: 'mipro15.6增强版',
             justSo: function() {
                 alert('电脑还可以看电影,打游戏,敲代码')
             }
         }
         console.log(computer);
         computer.justSo();
        //-------------------------------------------------------------------------------------------------
        // new Object
        // 语法: var 对象名 = new Object();
         var computer = new Object();
         computer.brand = '小米';
         computer.color = '太空灰';
         computer.weight = '2kg';
         computer.model = 'mipro15.6增强版';
         computer.justSo = function() {
             alert('电脑还可以看电影,打游戏,敲代码')
         }
         console.log(computer);
         computer.justSo();
        //------------------------------------------------------------------------------------------------------
        // 构造函数
        function Computer() {
            this.brand = '小米';
            this.color = '太空灰';
            this.weight = '2kg';
            this.model = 'mipro15.6增强版';
            this.justSo = '电脑还可以看电影,打游戏,敲代码';


        }
        console.log(new Computer());
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  1. 创建一个对象method, 里面定义两个方法,分别是

    1.求两个任意正整数的最大公约数, a 与 c, 可以同时被a和c整除的最大数

    2.求两个任意正整数的最小公倍数

<script>
     var method = {
            // 最大公约数
            max: function(a, b){  // a, b形参
                // 最大公约数,如果是2, 6; 1~4
                var min = Math.min(a, b);
                // 求出循环的最大值min, 1~min
                for(var i=min; i>0; i--){
                    // 判断这个数是否可以同时被a和b整除
                    if(a%i == 0 && b%i == 0){
                        return i;
                    }
                }
            },
            // 最小公倍数
            min: function(a, b){  
                // 2, 3 是6,  2, 6是6
                var max = Math.max(a,b);
                for(var i=max; i<=a*b; i++){
                    if(i%a == 0 && i%b == 0){
                        return i;
                    }
                }
            }
        }
        console.log(method.max(12, 18));//最大公约数
        console.log(method.min(12, 18));//最小公倍数
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  1. 创建一个教学工具对象, 要求这个对象有教学设备, 学生花名册, 还有一个随机点名的程序
<script>
     var tools = {
            m: "电脑",
            stuList: ["李雷", "Lucy", "lily", "韩梅梅"],
            rollCall: function() {
                // arr[suoyin]
                var random = Math.floor(Math.random() * tools.stuList.length);

                // 取数组的元素arr[索引值]
                console.log(tools.stuList[random]);

                // 在对象内部使用该对象的属性或方法,
                // 你可以使用this.属性名,比如,
            }
        }

        tools.rollCall()
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  1. 统计一个班的成绩, 语文,数学,英语,历史, 10个人, 我去搜索一个人名字.,请将他的全部信息输出到页面上

    • 先创建一个数组,用于存放学生信息
    • 再给数组中元素,赋值,一个包含姓名和成绩的对象
    • 创建一个函数,要求我传入姓名.你就返回给我这个同学信息(姓名和成绩的对象)
<script>
     var myClass = [];
        for (var i = 0; i < 3; i++) {
            var stuName = prompt('请输入姓名', '李雷');
            var stuC = prompt('请输入语文成绩', '90');
            var stuM = prompt('请输入数学成绩', '98');
            var stuE = prompt('请输入英语成绩', '89');
            var stuH = prompt('请输入历史成绩', '99');
            myClass.push({
                stuName: stuName,
                stuC: stuC,
                stuM: stuM,
                stuE: stuE,
                stuH: stuH
            })
        }
        创建函数
        function searchStu(sName) {
            // 判断是否有这个人的flag
            var flag = false;
            // 遍历出所有的学生
            for (var i = 0; i < myClass.length; i++) {
                // 判断stuName是否等于当前这个学生的姓名
                if (myClass[i].stuName == sName) {
                    // 返回这个学生的信息
                    flag = true;
                    return myClass[i];
                }
            }
            // 判断此人是否不存在
            if (!flag) {
                return {
                    stuName: '查无此人'
                };
            }
        }
        var obj = searchStu('lily');
        for (key in obj) {
            document.write(key + ":" + obj[key] + '<br />');
        }
        console.log(searchStu('lily'));
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  1. 创建一个函数,用于判断元素是否在这个数组内
<script>
     // 判断一个元素是否在数组内,indexOf,lastIndexOf,some
        function judge(num, arr){  // 函数的名字是你自己可以修改
            // if((num) != -1){
            //     return true;
            // }
            // return false;
            return arr.some(function(item){
                return item === num;
            })
        }
        console.log(judge(1, [1,2,3]));//判断1在不在[1,2,3]里面,在里面返回true
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. 把数组中的每一位数字都增加35%,并返回一个新数组
<script>
    // map函数
     // 数组名.map(function(item,index,array){})
     //返回匿名函数中,return后面的运算结果
         function changeArr(arr){
             return arr.map(function(item){
                 return item * (1+0.35);
             })
         }
         console.log(changeArr([1,3,6]));
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 创建一个函数,判断数组中是否存在30这个元素,返回布尔类型
<script>
    // some
     // 语法: 数组名.some(function(item, index, array){})
     // 如果数组中只要有一个元素满足函数中return后面的条件,那么久返回true,否则,返回false
         function judge(arr){
             return arr.some(function(item){
                 return item === 30;
             })
         }
         console.log(judge([10, 20, 40]));//数组中不存在30 false
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 创建一个函数,传入一个数和一个升序排列好的数组,要求将这个数插入到该数组中,并保证新的数组依然是升序排列,再将这个新数组返回
<script>
    function sortFunc(num, arr) {
            if (num > arr[arr.length - 1]) {
                return arr.concat(num);
            }

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

        console.log(sortFunc(5, [1, 6, 10]));//[1,5,6,10]
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 创建一个函数,用于将传入的数组,转换成字符串,每个元素之间使用-连接。

    比如:传入数组[“web”, “h5”, “javascript”],返回"web-h5-javascript"

<script>
    // join()
    // 将数组转换成字符串的方法
    // 语法: 数组名.join(参数) 
    // 参数是'-',表明你想要将数组的元素用'-';连接成字符串,并输出
    // 如果参数不填,默认是用逗号连接
         function joinFunc(arr){
             return arr.join('-');
         }
         console.log(joinFunc(["web", "h5", "javascript"]));//web-h5-javascript
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 创建一个函数,用于在传入的数组中查找参数a到参数b之间的元素,并返回它们的数组。
<script>
    function search(arr, a, b) {
            var min = Math.min(a, b);
            var max = Math.max(a, b);
            // filter
            //语法: 数组名.filter(function(item, index, array){})
            // 如果数组有满足,函数中return后面的条件的元素,
            // 就将他们储存在一个新的数组中,并将新的数组返回
            return arr.filter(function(item) {
                return item >= min && item < max;
            })
        }
        console.log(search([12, 10, 5, 8, 6], 6, 10));
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 创建函数, 将传入的字符串转换成驼峰式.

    比如:传入字符串’hello-world’,返回helloWorld

<script>
    function myFun(arr) {
            var arr1 = arr.split('-');
            var arr2 = arr1.map(function(item, index) {
                var b = item;
                if (index != 0) {
                    var a = item.charAt(0).toUpperCase();
                    b = item.replace(item.charAt(0), a);
                }
                return b;
            })
            return arr2.join('')
        }
        console.log(myFun('hello-world'));
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  1. 创建一个函数, 用于提取参数,(参数名和参数个数不确定) 功能如下:

    向函数中传入一个url地址, 请将url中的参数以对象的形式返回

    比如:url = ‘/?id=1&num=6&name=xxx’;

    将其以下面的形式返回到一个对象中 { id: ‘1’, num: ‘6’, name: ‘xxx’ }

<script>
     function getParams(url) {
            //先获取问号后面的字符串
            var index = url.indexOf('?');
            //截取问号后面的字符串,但是不包含问号
            var str = url.substring(index + 1);
            //将问号后面的字符串,按照&符分隔成数组
            var strArr = str.split('&');
            //创建一个空对象,用于储存参数信息
            var param = {};
            //遍历数组strArr
            for (var i = 0; i < strArr.length; i++) {
                var index1 = strArr[i].indexOf('=');
                var key = strArr[i].substring(0, index1);
                var value = strArr[i].substring(index1 + 1);
                param[key] = value;
            }
            // (param);
            return param;
        }
        console.log(getParams('/?id=1&num=6&name=xxx'));
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  1. 创建一个函数,用于求出传入的字符在传入的字符串中出现的次数,并将该字符与出现的次数连接成一个字符串返回
<script>
     function getCount(char, str) { //(字符,字符串)
            //将字符串切割成数组,空字符串切割
            var strArr = str.split('');
            //初始化计数器
            var num = 0;
            //遍历数组
            for (var i = 0; i < strArr.length; i++) {
                //判断字符串char是否等于当前字符
                if (char === strArr[i]) {
                    //计数器自增
                    num++;
                }
            }
            return char + num;
        }
        //调用函数
        console.log(getCount('s', "aahhbbsnnbb"));
    </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

38.随机点名

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #radm {
            font-size: 150px;
            text-align: center;
            line-height: 800px;
            font-weight: 400;
        }
    </style>
</head>

<body>
    <div id="radm">开始</div>

</body>
<script>
    var arr = ['小湫', '小欣', '小李', '小红', '小张', '小刘', '小梅', '小图', '小鬼']
    console.log(arr.length);
    var radm = document.getElementById('radm');
    var i = 0;
    var time;
    radm.onclick = function() {
        i++;
        if (i % 2 == 0) {
            clearInterval(time)
        } else {
            time = setInterval(function() {
                var k = Math.floor(Math.random() * arr.length);
                var r = Math.floor(Math.random() * 255);
                var g = Math.floor(Math.random() * 255);
                var b = Math.floor(Math.random() * 255);
                radm.innerHTML = arr[k];
                radm.style.color = `rgb(${r},${g},${b})`;
            }, 30)
        }
    }
</script>

</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45