欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js练习题

程序员文章站 2022-03-12 21:56:32
js练习题获取1-100之间的所有偶数计...

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. 计算1-100的积
<script>
    var num = 1;
        for(var n = 1; n<= 10;n++){
            num *= n;
           // console.log(num,n);
        }
        console.log(num);
    </script>
  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){
                        // console.log(`大马${x}匹; 中马${y}匹; 小马${z}匹`);
                        n++;
                    }
                }
            }
        }

        console.log(n);
    </script>
  1. 公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
<script>
    var a = 1;
        for(var i = 1;i < 7;i++){
            a = (a + 1) * 2;
        }
        console.log(a);
    </script>
  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. 输入显示的次数,按照你输入的次数显示“班训:快乐学习,认真生活!”,应该怎么写?
<script>
     // 输入显示次数 prompt() 需要存储起来你输入的值 循环
        // 输入显示次数
         var num = prompt('请输入显示次数:') * 1;

         // 循环范围 0-num
         for(var i = 0; i < num; i ++){
             document.write('班训:快乐学习,认真生活!<br />');
         }
    </script>
  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. 香蕉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. 会员卡四位数求和, 第一个数字大于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
        // console.log(g); 
        // console.log(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. 工资所得税工资超过3000的部分需要缴纳个人所得税,输出税后工资(税率为0.05)。
<script>
    // 输入您的工资
         var pay = prompt('输入您的工资');

         // 判断是否满足交税的条件
         if(pay > 3000){
             // 计算你拿到的实际工资
             // pay - (pay-3000) * 0.05
             alert('你拿到的实际工资是:' + (pay - (pay-3000) * 0.05))
         }
    </script>
  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. 计算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. 输出所有满足下列条件的四位整数。条件:个位数字加百位数字等于千位数字加上十位数字,且该四位数为奇数。
<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. 求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月份有多少天?
<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;
            }
        }

        // 调用函数
        // console.log(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. 时钟案例
<!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
            // clock1.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. 在一个函数中输入最大值(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. 封装斐波那契数列的函数, 可以查询到第几位的斐波那契数列的值是多少
<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. 编写函数validateCode(n),该函数实现随机产生n位数字构成的验证码,并返回该验证码。
<script>
     // 产生n位数字组成的验证码
        // 返回这个验证码
        function validateCode(n){
            // 初始化存放验证码的变量
            var str = '';
            // n位数
            for(var i=0; i<n; i++){
                // 随机数 Math.random() 0~1
                // 你需要 0~10 不包含10 Math.random()*10
                // Math.random()*10这个取得值为小数,转换成整数
                // 向下取整 Math.floor(Math.random()*10)
                // console.log(Math.floor(Math.random()*10));
                str += Math.floor(Math.random()*10);
            }

            return str;
        }

        document.write(validateCode(5));//随机的5位数字组成的验证码
    </script>
  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. 将数组[‘香蕉’, ‘苹果’, ‘橘子’, ‘梨’, ‘草莓’]进行反转为[‘草莓’, ‘梨’, ‘橘子’, ‘苹果’, ‘香蕉’]
<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. 新建数组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<myArr.length; i++){
        //     myArr3.push(myArr[i]);
        // }
        createArr(myArr, myArr3);
        // 遍历数组myArr2
        // for(var i=0; i<myArr2.length; i++){
        //     myArr3.push(myArr2[i]);
        // }
        createArr(myArr2, myArr3);
        document.write(myArr3 + '<br />');
        // 删除第一个元素
        myArr3.shift(); 
        // 删除最后一个元素
        myArr3.pop();
        document.write(myArr3);
    </script>
  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. 编写去重程序,将数组[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~arr.length-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. 创建一个电脑对象,要求这个对象有品牌,颜色,重量,型号,还可以看电影,打游戏,敲代码

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

<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. 创建一个对象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. 创建一个教学工具对象, 要求这个对象有教学设备, 学生花名册, 还有一个随机点名的程序
<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.属性名,比如,this.stuList
            }
        }

        tools.rollCall()
    </script>
  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. 创建一个函数,用于判断元素是否在这个数组内
<script>
     // 判断一个元素是否在数组内,indexOf,lastIndexOf,some
        function judge(num, arr){  // 函数的名字是你自己可以修改
            // if(arr.indexOf(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. 把数组中的每一位数字都增加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. 创建一个函数,判断数组中是否存在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. 创建一个函数,传入一个数和一个升序排列好的数组,要求将这个数插入到该数组中,并保证新的数组依然是升序排列,再将这个新数组返回
<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. 创建一个函数,用于将传入的数组,转换成字符串,每个元素之间使用-连接。

    比如:传入数组[“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. 创建一个函数,用于在传入的数组中查找参数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. 创建函数, 将传入的字符串转换成驼峰式.

    比如:传入字符串’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. 创建一个函数, 用于提取参数,(参数名和参数个数不确定) 功能如下:

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

    比如:url = ‘https://www.example.com/index.html?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;
            }
            // console.log(param);
            return param;
        }
        console.log(getParams('https://www.example.com/index.html?id=1&num=6&name=xxx'));
    </script>
  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>

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>

本文地址:https://blog.csdn.net/Z_qing_he/article/details/111873542

相关标签: js javascript