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()));


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