javaScript之函数方法

*Math:封装了数学计算的常量值和方法

    ***不能实例化对象

        实例化:用new 创建一个指定类型的具体对象  --实例instance

        var arr=new Array();


    Math常用API:

        取整:3种:

            上取整:Math.ceil(n)

            下取整:Math.floor(n)

            四舍五入:Math.round(n)


            n.toFixed(d):按指定d位小数四舍五入

            Math.round(n):不能指定小数位数,只能取整;*返回number*        


乘方和开平方:

        乘方:Math.pow(底数,幂)         开平方:Math.sqrt(n);


案例:

function myRound(num,d){
    //num*10的d次方,再存回num中
     num*=Math.pow(10,d);
    //调用Math.round方法取整,再存回num中
    num=Math.round(num);
    //num/10的d次方,再存回num中
    num/=Math.pow(10,d);
    //返回num
    return num;
}
/*测试程序*/
console.log(myRound(234.567,2));
console.log(myRound(234.567,0));
console.log(myRound(234.567,-1));


最大值和最小值:

    最大值:var max=Math.max(z1,z2,z3.....);

=>固定套路:var max=Math.max.apply(Math,[z1,z2...]);

    最小值:var min=Math.min.apply(Math,[z1,z2....]);


随机数:Math.random();  -->0<=r<1

    作用:min~max  取随机整数

    公式: Math.floor(Math.random()*(max-min+1)+min); 


案例2:模拟实习双色球机选程序

function doubleBall(){
    //红球:1~33之间取随机整数,6个不重复的整数
    var reds=[];
    //反复生成随机数,直到reds.length等于6
    while (reds.length<6){
        //  在1~33之间生成一个随机数,存入red中
        var red=Math.floor(Math.random()*33+1);
        //  遍历reds中每个元素
        for(var i=0;i<reds.length;i++){
            //     只要发现当前元素等于red,就break
            if(reds[i]==red){
                //        退出循环
                break;
            }
        }
        //(遍历结束)如果i等于reds.length
        if(i==reds.length) {
            //     将red压入reds中
            reds.push(red);
        }
    }
   //(退出循环)定义升序比较器函数compare
    function compare(a,b){return a-b}
//调用reds的sort方法,传入copmare函数对象,排序
reds.sort(compare);

//篮球:1~16之间
var blue=Math.floor(Math.random()*16+1);
//
//返回reds toSting后的字符串
 return reds.toString()+'|'+blue;
}

document.write(doubleBall());


案例:随机生成4位验证码

/*将所有数字和字母都放入一个数组中*/
var chars=[];
//写入0-9
    for(var i=0;i<=9;i++){
        chars.push(i+"");
    }
    for (var i=65;i<=90;i++){
        chars.push(String.fromCharCode(i));
    }
console.log(chars);
    for(var i=97;i<=122;i++){
        chars.push(String.fromCharCode(i));
    }
    function getCode(){//从chars中随机抽4个位置
        //i从0开始,到<4结束,同时声明空数组codes
        /*var codes=[];
        while (codes.length<4){
            var code=Math.floor(Math.random()*(chars.length-1)+1);
        }*/
        for(var i= 0,codes=[];i<4;i++){

        //  0~chars.length-1之间生成随机位置,存在index
            var index=Math.floor(Math.random()*chars.length);

        //  将chars中index位置的元素压入codes中

            codes.push(chars[index]);
        }//(循环结束)返回codes无缝拼接的字符串
        return codes.join("");
    }
    //请用户反复输入验证码,直达输入正确才退出循环
var input="";
  var code=getCode();
    while(/*input!=code*/(input=prompt("输入验证码:"+code)).toLowerCase()!=code.toLowerCase()){//.toLowerCase()用于忽略大小写
        //弹出提示:验证码错误
        alert("验证码错误");
        //重新获得验证码,存入code中
        code=getCode()
    }
    document.write("<h1>验证通过</h1>");


2*Date:封装了19270年1月1日0时至今的毫秒数

          创建:4种:

               1.创建日期对象,同时获得*当前时间*  --客户端时间

                       var now =new Date();

               2.自定义任意时间点:

                       var date=new Date("xxxx/xx/xx[xx:xx:xx]");//00:00:00

案例:两时间对象相减,得到毫秒差


               3.自定义任意时间点:

                       var date=new Date(xxxx,xx,xx[xx,xx,xx])  ps:除了月份以外,其他都是从0开始,需要用-1进行修正

               4.复制一个日期对象:

                     何时使用:日期API都直接修改原日期对象

                      如果希望留住旧日期对象,就需要先复制,再修改副本再计算

                      如何复制:    

var old=new Date("xxx");
var target=new Date(old.getTime());
                    其中:old.getTime()返回旧时间中的毫秒数


               Date对象API:

                      分量:        年             月             日            星期          时          分                   秒             毫秒

                                    FullYear      Month      Date           Day      Hours      Minutes   Seconds   Milliseconds

                    1.每个分量都有一对儿  get/set 方法

                                      getxxx获得分量的值       setxxxx设置分量的值,Day没有set

                    2.命名:年月日星期,没有s结尾;时分秒毫秒,都有s结尾

                    3.返回值:Date从1开始到31结束,除Date,其余都是从0开始,到(进制-1)结束

                              强调:只有Month需要修正,其余都正常

                    4.日期转字符串:

                             var str=date.toLocalString();//日期+时间

                             var str=date.toLocalDateString();//日期

                             var str=date.toLocalTimeString();//时间

                     Date的就算:2种:

                          1.两日期对象可相减,结果是毫秒差

                          2.对日期任意分量做加减:分3步:取分量,做加减,set回去    --ps:set方法自动调整进制

                                固定套路:date.setxxx(date.getxxx()+/-n);

                            强调:1.set方法直接修改原日期对象:如果要保留旧日期,先复制,再计算  ps:见案例复制

                                        2.set方法自动调整进制

案例:

//自定义格式化日期的方法:接收一个日期对象date参数
  /*返回:“2015年12月09日 星期三  上午09:13:00”
  * */
    function format(date){
        //创建数组week,初始化7个汉字星期值:星期日,星期一
        var week=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
        //初始化空数组 arr
        var arr=[];
        //从date中获取年份,压入arr中
        arr.push(date.getFullYear());
        //从date中获取月份,临时保存在M中
        var M=date.getMonth();
        //只有M<10,才将M改为0+M
       M<10&&(M="0"+M);
        //将M压入arr中
        arr.push(M);
        /*arr.push(M<10?"0"+M;M)*/
        //从date中获取日,保存在d中
        var d=date.getDate();
        //只有d<10,才将d改为0+d

        //将d压入arr中
        arr.push(d<10?"0"+d:d);
        //将date的星期值作为下标,获得week中对应的星期,压入arr中
        arr.push(week[date.getDay()]);
        //从date中获得小时,保存在h中
        var h=date.getHours();
        //如果h<12,就向arr中压入“上午”,否则压入“下午”
        arr.push(h<12?"上午":"下午");
        //只有h<10,才将h改为0+h

        //将h压入arr中
        arr.push(h<10?"0"+h:h);
        //从date中获得分针,保存在m中
        m=date.getMinutes();
        //只有m<10,才将m改为0+m
        //将m压入arr中
        arr.push(m<10?"0"+m:m);
        var s=date.getSeconds();
        //只有s<10,才将h改为0+s
        //将s压入arr中
        arr.push(s<10?"0"+s:s);
        //[2015,12,09,星期三,上午,09,18,45]
        return arr;
    }
console.log(format(new Date()));


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章