慢慢補(bǔ)充。。。
目錄
- 正則
- Array的方法
- String的方法
- Math的方法
- Date的方法
正則
《網(wǎng)易微專業(yè)之《前端工程師》學(xué)習(xí)筆記(12)-JS正則》
Array的方法
String的方法
Math的方法
(1)Math.max()和Math.min();
max()和min()方法用于確定一組數(shù)值中的最大值和最小值。這兩個(gè)方法都可以接收任意多個(gè)數(shù)值參數(shù),比如下面的栗子。
var max=Math.max(3,54,32,16);
alert(max); //54
var min=Math.min(3,54,32,16);
alert(min); //3
這兩個(gè)方法經(jīng)常用于避免多余循環(huán)和在if語句中確定一組數(shù)的最值。
另外要找到數(shù)組中的最大或最小值,可以像下面這樣使用apply()方法。
var values=[1,2,3,4,5,6,7,8];
var max=Math.max.apply(Math,values);
apply函數(shù)中的第一個(gè)參數(shù)為函數(shù)所屬對象,通常為當(dāng)前頁面(this)。用上面這個(gè)技巧的關(guān)鍵是把Math對象作為apply()的第一個(gè)參數(shù),從而正確設(shè)置this值。第二個(gè)參數(shù)為傳入到函數(shù)中的參數(shù)數(shù)組(必須為數(shù)組)。
(2)舍入方法
指的是,math中將小數(shù)值舍入為整數(shù)的幾個(gè)方法:Math.ceil()、Math.floor()和Math.round()。
- Math.ceil()是向上取整;
- Math.floor()是向下取整;
- Math.round()是數(shù)學(xué)課上的正常的四舍五入;
Math.ceil(1.1);//2
Math.ceil(1.9);//2
Math.floor(25.1) //25
Math.floor(25.9) //25
Math.round(25.1) //25
Math.round(25.9) //26
再來來看看應(yīng)用的實(shí)例:
var numVar=2;
var numVar2=3.5;
var numVar3=-80.6;
document.write("3.5的floor()值為"+Math.floor(numVar2)+"<br/>");
(3)Math.random()
Math.random()方法返回大于等于0小于1的一個(gè)隨機(jī)數(shù)。對于某些站點(diǎn)來說,這個(gè)方法非常實(shí)用,因?yàn)榭梢岳盟鼇黼S機(jī)顯示一些名人名言和新聞事件。
用下面的公式“
值=Math.floor(Math.random()*可能值的總數(shù)+第一個(gè)可能的值)
公式中用到Math.floor()這個(gè)將小數(shù)向下取整的方法,是因?yàn)镸ath.random()總是返回一個(gè)小數(shù)值,而用這個(gè)小數(shù)值乘以一個(gè)整數(shù),然后再加上一個(gè)整數(shù),最終的結(jié)果仍然還是一個(gè)小數(shù)。
舉個(gè)栗子,假如你想選擇一個(gè)1到10之間的數(shù)值,可以像下面的代碼那樣寫:
var num=Math.floor(Math.random()*10+1);
分析一下:總共有10個(gè)可能的值(1到10),而第一個(gè)可能的值是1。而如果想要選擇一個(gè)介于2到10之間的值,就應(yīng)該將上面的代碼改成下面這樣的:
var num=Math.floor(Math.random()*9+2);
分析下:從2數(shù)到10總共有9個(gè)數(shù),因此可能值的總數(shù)就是9,而第一個(gè)可能的值就是2。
當(dāng)然,多數(shù)情況下,都可以用一個(gè)函數(shù)來計(jì)算可能值的總數(shù)和第一個(gè)可能的值,例如:
function selectFrom(lowerValue,upperValue){
var choices=upperValue-lowerValue+1;
return Math.floor(Math.random()*choices+lowerValue);
}
var num=selectFrom(2,10);
alert(num); //介于2和10之間的一個(gè)數(shù)值(包括2和10)
分析下:函數(shù)selectFrom()接受兩個(gè)參數(shù):一個(gè)是最小值,一個(gè)是最大值。而用最大值減去最小值再加1就得到可能值的總數(shù),然后再套用的剛才的公式中去。
(4)Math.abs(num)是返回num的絕對值
Math.abs(-10); //10
數(shù)值類型轉(zhuǎn)換的方法
(一)將數(shù)值格式化為字符串:toFixed()
toFixed()方法會(huì)按照制定的小數(shù)位返回?cái)?shù)值的字符串表示。例如:
var num=10;
alert(num.toFixed(2)); //"10.00"
分析下:傳入的2是顯示幾位小數(shù)的意思,如果數(shù)值本身包含的小數(shù)位數(shù)比指定的小數(shù)位數(shù)多,那么數(shù)值就會(huì)被舍入處理。如:
var num=10.005;
alert(num.toFixed(2)); //"10.01"
正是因?yàn)槟軌蜃詣?dòng)舍入,所以toFixed()方法很適合處理貨幣值。不過當(dāng)toFixed()傳入0,IE8會(huì)出錯(cuò),IE9修復(fù)了錯(cuò)誤。
(二)將字符串轉(zhuǎn)換為數(shù)字
(1)parseInt():返回整型的數(shù)字
語法:
parseInt(string,radix)
其中radix表示string參數(shù)中數(shù)字的進(jìn)制,默認(rèn)是十進(jìn)制,取值范圍為2~32。但是如果字符串的第一個(gè)字符不能被轉(zhuǎn)換為數(shù)字,那么parseInt()函數(shù)會(huì)返回NaN。實(shí)例如下:
document.write(parseInt("25")+"<br/>");
//返回25
document.write(parseInt("11",2)+"<br/>");
//參數(shù)是2進(jìn)制,返回十進(jìn)制結(jié)果,返回3
document.write(parseInt("8M")+"<br/>");
//參數(shù)首字符是數(shù)字,但后面的是字符,返回8
(2)parseFloat():返回浮點(diǎn)型的數(shù)字
語法如下:
parseFloat(string);
只能傳入一個(gè)參數(shù),和parseInt()不同,說明,如果字符串的第一個(gè)字符不能被轉(zhuǎn)換為浮點(diǎn)數(shù),那么parseFloat()函數(shù)會(huì)返回NaN??聪吕踝樱?/p>
document.write(parseFloat("25.33")+"<br/>"); //25.33
document.write(parseFloat("25.33M")+"<br/>"); //25.33
(3)Number()函數(shù)把對象的值轉(zhuǎn)換為數(shù)字。這個(gè)是重點(diǎn)有難度,需要花點(diǎn)功夫去掌握。
Number(object)
說明:參數(shù)必須是JS對象。如果對象的值無法轉(zhuǎn)換為數(shù)字,那么 Number() 函數(shù)返回 NaN。實(shí)例如下:
Number('100.1') // 100.1
Number('12.4b5') // NaN
Number('www') // NaN
當(dāng)然傳入數(shù)值、字符串、布爾值也沒關(guān)系,數(shù)值、字符串、布爾值這些基本類型值被讀取的時(shí)候EcmaScript會(huì)短暫的創(chuàng)建一個(gè)相應(yīng)的對象,并進(jìn)行操作。
關(guān)于Number()函數(shù)在特殊值的轉(zhuǎn)換結(jié)果暫略。。。等Uolcano整理完再補(bǔ)充。
Date的方法
(1)獲取當(dāng)前日期就用:
var date=new Date();
console.log(date);
返回:Sat Jan 23 2016 16:15:17 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
(2)打印指定的日期,可以在()后面?zhèn)魅藭r(shí)間參數(shù)
new Date(year,month[,day[,hour[,minutes[,seconds[,milliseconds]]]]])
比如,傳人2016.02.03.14:52,可以這樣寫
var date=new Date(2016,1,3,14,52);
console.log(date);
返回:Wed Feb 03 2016 14:52:00 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
注意:月份是從0開始計(jì)算的,比如你要輸1月份,就要輸0,2月份就要輸1。另外,參數(shù)默認(rèn)的必須填年和月,其他的諸如日小時(shí)分鐘可以選擇不填。
(3)getXXX()
var date=new Date(2015,7,20,14,57,18)
date.getFullYear(); //2015
date.getMonth(); //7
date.getDate(); //20
date.getHours(); //14
date.getMinutes(); //57
date.getSeconds(); //18
(4)日期格式轉(zhuǎn)換

如何把JS的默認(rèn)時(shí)間格式換成我們想要的右邊那種格式呢。
function padding(number){
return number<10?"0"+number:""+number;
}
function format(date){
return date.getFullYear()+"-"
+padding(date.getMonth()+1)+"-"
+padding(date.getDate())+" "
+padding(date.getHours())+":"
+padding(date.getMinutes())+":"
+padding(date.getSeconds());
}
var date=new Date(2015,7,20,14,57,18);
format(date);
返回:"2015-08-20 14:57:18"
(5)setXXX();
var date=new Date(2015,7,20,14,57,18);
date.setFullYear(2046); //2046-08-20 14:57:18
date.setMonth(2); //2046-03-20 14:57:18
date.setDate(15); //2046-03-15 14:57:18
date.setHours(8); //2046-03-15 08:57:18
date.setMinutes(16); //2046-03-15 08:16:18
date.setSeconds(56); //2046-03-15 08:16:59
接下來我們看,如果我們吧setDate設(shè)置為35天,會(huì)如何呢?
var date=new Date(2015,7,20,14,57,18);
date.setDate(35);
/*需要經(jīng)過上面的格式轉(zhuǎn)換*/
//2015-09-04 14:57:18
由此我們可以看出,會(huì)setXXX()會(huì)進(jìn)行動(dòng)態(tài)計(jì)算的,因此這個(gè)常??梢曰钣脕碛?jì)算每月到底有幾天。
(6)求天數(shù)栗子

首先我們來看看原理

就是利用了瀏覽器可以動(dòng)態(tài)計(jì)算傳人的時(shí)間參數(shù),比如日期輸入第0天,就會(huì)返回上個(gè)月的最后一天,上個(gè)月的最后一天的數(shù)字就是上個(gè)月的天數(shù)了,用這個(gè)原理來求天數(shù)。下面我們來看實(shí)際的代碼:
function getDays(year,month){
var date =new Date(year,month,0);
return date.getDate();
}
alert("2001年2月有"+getDays(2001,2)+"天");
alert("2001年3月有"+getDays(2001,3)+"天");
(7)Date轉(zhuǎn)number和number轉(zhuǎn)Date

比如前端處理完Date后,要存到服務(wù)器端的時(shí)候就需要將Date轉(zhuǎn)成number,怎么轉(zhuǎn)呢,就用getTime()來獲得number,這個(gè)number的意思是距1970年1.1的毫秒數(shù)。

如果要把服務(wù)器端的number轉(zhuǎn)Date就直接把nubmer傳到newDate()括號里作為參數(shù),就可以了,如果你有個(gè)number就可以用setTime()來設(shè)置。