2021-10-22(好多函数案例)

Math对象最大值

    <script>
        //Math 不是构造函数 不需要new调用 直接使用就行
        console.log(Math.PI);//一个属性:圆周率
        console.log(Math.max(1,5,99,2,55,3));//一个方法:求最大值
        console.log(Math.min(1,2,3,5,4));              //最小值
        console.log(Math.max(1,99,'pink老师'));//非数字返回NaN
        console.log(Math.max());//-Infinity负无穷
    </script>

封装一个自己的数学函数

   <script>
      var myMath = {
         PI : 3.1415926,
         max : function () {
            var max = arguments[0];
            for (var i = 0; i < arguments.length; i++) {
               if (max < arguments[i]) {
                  max = arguments[i];
               }
            }
         return max;
         },
         min : function () {
            var min = arguments[0];
            for (var i = 1; i < arguments.length; i++) {
               if (min > arguments[i]) {
                  min = arguments[i];
               }
            }
            return min;
         }
      }
      console.log(myMath.PI);
      console.log(myMath.max(1,5,2,10,4));
      console.log(myMath.min(1,5,2,10,4));
   </script>

   <script>
      //绝对值
      console.log(Math.abs(1));//1
      console.log(Math.abs(-1));//1
      console.log(Math.abs('-1'));//1 隐式转换  会把字符串型转换为数字型
      console.log(Math.abs('pink'));//not a number  NaN

      //三个取整的方法
      //(1) Math.floor(); 向下取整 往小取
      console.log(Math.floor(1.1));//1
      console.log(Math.floor(1.9));//1
      //(2) Math.ceil();  向上取整  往大取
      console.log(Math.ceil(1.1));//2
      console.log(Math.ceil(1.9));//2
      //(3) Math.round()  四舍五入  *** 负数只会往大取
      console.log(Math.round(1.1));//1
      console.log(Math.round(1.1));//1
      console.log(Math.round(-1.1));//-1
      console.log(Math.round(-1.5));//-1  
      </script>

随机数方法random()

    <script>
        //Math对象随机数方法 random() 返回一个随机的小数[0,1)之间
        //这个方法不跟参数
        //代码验证
        console.log(Math.random());

        //想得到两个数之间的随机整数  并且包含这两个整数
        //Math.floor(Math.random() * (max - min + 1)) + min;
        function getRandom(min,max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        console.log(getRandom(1,10));
        
        //随机点名
        var arr = ['张三','张三疯','吴亦凡','刘德华','潘长江'];
        console.log(arr[getRandom(0,arr.length-1)]);
    </script>

猜数字案例游戏 

    <script>
        //1 随机生成1-10的整数 
        //2 猜到正确位置  否则一直循环
        //while循环好用
        // if else if大于 小于  等于
        function getRandom(min,max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        var random = getRandom(1,10)
        while (true) {
            var num = prompt('你来猜 1-10直间的数字');
            if (num > random) {
                alert('大了哦');
            }else if(num < random){
                alert('小了哦');
            }else {
                alert('猜对了');
                break;
            }
        }
    </script>

日期

   <script>
      //Date(); 日期对象 是构造函数 需要new调用
      var date = new Date();
      //如果没有参数返回当前系统的当前时间
      console.log(date);
      //参数常用的写法 数字型 2019,10,01 或 字符串型 '2021-10-1 8:8:8'
      var date1 = new Date(2019,10,1);
      console.log(date1);//返回的是十一月 不是十月 Fri Nov 01 2019 00:00:00 GMT+0800 (中国标准时间)
      //字符串型
      var date2 = new Date('2021-10-1 8:8:8');
      console.log(date2);//这个没错  Fri Oct 01 2021 08:08:08 GMT+0800 (中国标准时间)
   </script>

日期的格式化(年月日)

    <script>
        var date = new Date();
        console.log(date.getFullYear());//返回当前日期的年份
        console.log(date.getMonth()+1);//返回的月份小一个月  0-11  加一即可
        console.log(date.getDate());//返回的是几号
        console.log(date.getDay());//返回周几   周一为1   周六为6   周日为0
        ///我们写一个 2021年 9月20日 星期一
        var year = date.getFullYear();
        var month = date.getMonth()+1;
        var dates = date.getDate(); 
        var day = date.getDay();
        var arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
        console.log('今天是'+year+'年'+month+'月'+dates+'日'+arr[day]);
    </script>

 

日期的格式化(时分秒)

    <script>
        var date = new Date();
        console.log(date.getHours());//时
        console.log(date.getMinutes());//分
        console.log(date.getSeconds());//秒
        //要求封装一个函数返回当前的时分秒 格式08:08:08
        function getTime() {
            var time = new Date;
            var h = time.getHours();
            h = h < 10 ? '0'+h : h;
            var m = time.getMinutes();
            m = m < 10 ? '0'+m : m;
            var s = time.getSeconds();
            s = s < 10 ? '0'+s : s;
            return h + ':' + m + ':' + s;

         }
         console.log(getTime());
    </script>

获取日期的总毫秒数(倒计时)

Date对象基于1970.1.1起的毫秒数

    <script>
        //获取Date总的毫秒数(时间戳)   不是当前时间的毫秒数 而是距离1970年一月一日过了多少毫秒
        //1 通过valueOf()  或者getTime()
        var date = new Date();
        console.log(date.valueOf());//是距离1970年一月一日过了多少毫秒
        console.log(date.getTime());//是距离1970年一月一日过了多少毫秒
        ///简单最常用的写法的写法
        var date1 = +new Date(); 括号里写时间是到那个时间的总毫秒数,不写是截至当前时间,是距离1970年一月一日过了多少毫秒
        console.log(date1);
        //最简单的写法 H5新增的 不考虑兼容性可以用
        console.log(Date.now());
    </script>

倒计时案例

    <script>
        // 倒计时效果
        //1 核心算法:输入的时间减去现在的时间 就是剩余的时间,即倒计时。但是不能拿着时分秒相减,比如05分减去25分 结果为负数
        //2 用时间戳来做  用户输入时间总的 毫秒数减去现在时间的总毫秒数 得到的就是剩余时间的总毫秒数
        //3 把剩余的时间总毫秒数 转换为天 时 分 秒 
        //转换格式如下
        //d = parseInt(总秒数/60/60/24);  计算天数
        //h = parseInt(总秒数/60/60%24);  计算小时
        //m = parseInt(总秒数/60%60));    计算分钟
        //s = parseInt(总秒数%60);        计算秒数 
        function countDown(time) {
            var nowTime = +new Date();//括号为空返回的就是当前时间的总毫秒数
            var inputTime = +new Date(time);//返回时用户输入时间的总毫秒数
            var times = (inputTime - nowTime) / 1000;//剩余时间的总秒数
            var d = parseInt(times/60/60/24);
            d = d > 10? d : "0" + d;
            var h = parseInt(times/60/60%24);
            h = h > 10? h : "0" + h;
            var m = parseInt(times/60%60);
            m = m > 10? m : "0" + m;
            var s = parseInt(times%60);
            s = s> 10? s : "0" + s;
            return d + '天' + h +'时' + m + '分' + s + '秒';
        }
        console.log('2022专升本倒计时');
        console.log(countDown('2022-6-7 08:00'));
    </script>

创建数组的两种方式

    <script>
        //创建数组的两种方式
        //1 字面量
        var arr = [1,2,3,5];
        console.log(arr[0]);
        //2 new Array();
        // var arr1 = new Array();      创建了一盒空数组
        // var arr1 = new  Array(2);这个2表示数组的长度为2 里边有两个空数组元素
        var arr1 = new Array(2,3);//表示里边 有两个数组 2 和 3 
        console.log(arr1);  
    </script>

判断是否为数组

    <script>
        //翻转数组案例
        function reverse (arr) {
            if (arr instanceof Array) {
                var temp =  [];
            for (var i = arr.length-1; i >= 0; i--) {
                temp[temp.length] = arr[i];
            }
                return temp;
            }else {
                return '这个参数要求为数组';
            }
            
        }
        console.log(reverse([1,2,3]));//3 2 1 
        console.log(reverse(1,2,3));//这个参数要求为数组
        //检测是否为数组的方法
        //(1) instanceof 运算符 检测是否为数组
        var arr = [];
        var obj = {};
        console.log(arr instanceof Array);//true  是返回true 不是返回flase
        console.log(obj instanceof Array);//flase   这是一个对象 不是数组
        //( 2 ) Array.isArray(参数);
        console.log(Array.isArray(arr));//true
        console.log(Array.isArray(obj));//flase
    </script>

 

添加或者删除数组元素

    <script>
        //1 push() 在数组的末尾 添加一个或者多个数组元素  push推
        var arr = [1,2,3,4];
        // arr.push(5,6,'pink');
        console.log(arr.push(5,6,'pink'));
        console.log(arr);
        //(1) push 可以给数组追加新的元素
        //(2) push() 参数直接写 数组元素就可以了
        //(3) push完毕之后 返回的结果是新数组的长度
        //(4) 原数组也会发生变化


        //2 unshift 在数组的开头 添加一个或者多个数组元素
        // arr.unshift('red');
        console.log(arr.unshift('red'));
        console.log(arr);
        //(1) unshift 可以给数组最前边追加新的元素
        //(2) unshift() 参数直接写 数组元素就可以了
        //(3) unshift完毕之后 返回的结果是新数组的长度
        //(4) 原数组也会发生变化


        //3 pop() 可以删除数组的最后一个元素
        // arr.pop();
        console.log(arr.pop());//返回值为删除的元素
        console.log(arr);
        //(1) pop 可以删除数组的最后一个元素(只能删除一个)
        //(2) pop() 不跟参数
        //(3) pop完毕之后 返回的结果是删除的元素
        //(4) 原数组也会发生变化


        //4 shift() 可以删除数组的第一个元素
        // arr.shift();
        console.log(arr.shift());//返回值为删除的元素
        console.log(arr);
        //(1) shift 可以删除数组的第一个元素(只能删除一个)
        //(2) shift() 不跟参数
        //(3) shift完毕之后 返回的结果是删除的元素
        //(4) 原数组也会发生变化
    </script>

数组排序         

    <script>
        //数组排序
        //1 翻转数组(方法)
        var arr = ['pink','blue',555];
        arr.reverse();
        console.log(arr);

        
        //2 数组排序(冒泡排序)方法
        var arr1 = [3,4,77,1];
        arr1.sort(function (a,b){
            // return a - b;//升序排列
            return b - a;//降序排列
        });
        console.log(arr1);
    </script>

获取数组的索引的方法

    <script>
        //返回数组元素索引号的方法 indexOf(数组元素) 
        var arr = [1,2,3,4,5,6,2];
        console.log(arr.indexOf(1));//0  返回1元素在数组中的索引号  
        console.log(arr.indexOf(2));//2  如果有两个相同的元素 只返回第一个索引号
        console.log(arr.indexOf(7));//-1 如果找不到这个元素返回-1

        //lastindexOf(数组元素) 倒着数 但是索引号不变 记住前者indexOf就行
        console.log(arr.lastIndexOf(6));//5
    </script>

数组转换为字符串

    <script>
        //数组转化为字符串
        //1 toString()  是一个方法   将数组转换为字符串
        var arr = [1,2,3,4];
        console.log(arr.toString());
        //2 join(分隔符) 
        var arr1 = ['blue','pink','red'];
        console.log(arr.join());//不写分隔符默认逗号 
        console.log(arr.join("-"));//
        console.log(arr.join("&"));
    </script>

 

返回字符串的索引号

    <script>
        //字符串对象 根据字符返回位置 str.indexOf('查找的字符',[起始的位置]);
            var  str = '改革春风吹满地,春天来了';
            console.log(str.indexOf('春'));//有两个春 只返回第一个
            console.log(str.indexOf('春',3));//从索引号3开始查找跨过第一个春   8
    </script>

 

数组去重

    <script>
        //去重['c','a','z','a','x','a','x','c','b'];
        // var arr = ['c','a','z','a','x','a','x','c','b'];
        // var newarr = [];
        // for  (var i = 0; i < arr.length; i++) {
        //     if(newarr.indexOf(arr[i]) == -1) {
        //         newarr[newarr.length] = arr[i];
        //     }
        // }
        // console.log(newarr);
        //把这个程序封装为一个函数
        function unique(arr) {
            var newarr = [];
            for (var i = 0; i < arr.length; i++) {
                if (newarr.indexOf(arr[i]) == -1) {
                    newarr[newarr.length] = arr[i];
                }
            }
            return newarr;
        }
        var result = unique(['c','a','z','a','x','a','x','c','b']);
        console.log(result);
    </script>

 返回字符案例

    <script>
        // 查找字符'abiodsodfbo'中o出现的位置以及次数
        
        // function uniqur(str) {
        //     var sum = 0;
        //     for (var i = 0; i < str.length; i++) {
        //         if (str[i] == 'o') {
        //             sum +=1;
        //             console.log(str.indexOf('o',[i]));
        //         }
        //     }
        //     return sum;
        // }
        // console.log(uniqur('abiodsodfbo'));
        var str = 'abiodsodfbo';
        var index = str.indexOf('o');
        var sum = 0;
        while (index !== -1) {
            console.log(index);
            sum +=1;
            index = str.indexOf('o',[index+1]);
        }
        console.log('一共'+ sum +'次');
    </script>

⭐根据位置返回字符

    <script>
        //根据位置返回字符  index索引
        //1 charAt(index) 根据位置返回字符
        var str = 'andy';
        console.log(str.charAt(3));//返回str第三个元素y
        //遍历所有的字符
        for (var i = 0; i < str.length; i++) {
            console.log(str.charAt(i));
        }
        //2 charCodeAt(index) 返回相应索引号的字符ASCII值   目的:判断用户按了哪个键
        console.log(str.charCodeAt(0));//  a----97 
        //3 str[index] H5新增的
        console.log(str[0]);//a 
    </script>

统计出现最多的字符和次数

    <script>
        //有一个对象   判断是否有该属性
        var o = {
            age: 18
        }
        if (o['sex']) {
            console.log('有这个属性');
        }else {
            console.log('没有该属性');
        }
        //判断一个字符串'abiodsodfbo'中出现次数最多的字符    并统计其次数
        //核心算法:利用charAt()  遍历这个字符串
        //把每个字符都存储给对象 如果对象有该属性就为1 如果存在了就+1
        // 遍历对象 得到最大值和该字符
        var str = 'abiodsodfbo';
        var o = {};
        for (var i= 0; i <str.length; i++){
            var chars = str.charAt(i);//chars 是字符串额每一个字符
            if (chars in o) {
                o[chars]++; 
            }else {
                o[chars] = 1;
            }
        }   
        console.log(o);
        console.log(typeof o[chars]);
        //2 遍历对象 for in 
        var max = 0;
        var ch = '';
        for (var k in o) {
            // k 得到的是属性名  
            //o[k] 得到的是属性值
            if (o[k] > max) {
                max = o[k];
                ch = k;//k是最大的属性名
            }
        }
        console.log(max);
        console.log(ch);
    </script>

字符串的操作方法

    <script>
        //字符串操作方法
        //1 concat('字符串1','字符串2'....)  **********拼接
        var  str = 'andy';
        console.log(str.concat('red'));//andyred
         
        //2 substr('截取的起始位置','截取几个字符');**********截取
        var str1 = '改革春风吹满地';
        console.log(str1.substr('2','2'));// 春风  从索引号2开始  取2个字符  
    </script>

 其他方法

    <script>
        //1 替换字符 replace('被替换的字符','替换为的字符')
        var str = 'anady';
        console.log(str.replace('a','b'));/* 把a替换成b  如果有多个a 只会替换第一个a*/
        //小案例  有一个'abceosofgopp'  把o替换为*
        var str1 = 'abceosofgopp';
        while(str1.indexOf('o')  !== -1){
            str1 = str1.replace('o','*');
        }
        console.log(str1);

        //2 字符串转换为数组split('分隔符')   join是把数组转换为字符串
        var str2 = 'red,blue,pink';
        console.log(str2.split(','));
        var str3 = 'red&blue&pink';
        console.log(str3.split('&'));
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值