title: javascript(時(shí)間设塔、數(shù)組凄吏、字符串方法)
date: 2017-06-01 10:25:43
tags: javascript筆記
日期對(duì)象
常用方法
new Date()
獲取當(dāng)前時(shí)間
以下獲取的都是數(shù)值類型,get是獲取時(shí)間,將get改為set后面的不變就是設(shè)置時(shí)間痕钢。
getFullYear()
獲取年
getMonth()
獲取月份图柏,從0開始算
getDate()
獲取天
getDay()
獲取星期幾,0是周日
getHours()
獲取小時(shí)
getMinutes()
獲取分鐘
getSeconds()
獲取秒
getMilliseconds()
獲取毫秒
getTime()
時(shí)間戳任连,返回從1970年1月1日0點(diǎn)0分0秒0毫秒開始計(jì)算的毫秒時(shí)間蚤吹。
getTimezoneOffset()
獲取本地時(shí)間與格林威治標(biāo)準(zhǔn)時(shí)間的分鐘差。
parse()
返回從1970年1月1日到指定日期(字符串)的毫秒數(shù)随抠。
UTC()
根據(jù)世界時(shí)間返回從1970年1月1日到指定日期(字符串)的毫秒數(shù)距辆。
以上獲取時(shí)間的方法在get后加上UTC就是根據(jù)世界時(shí)間獲取,例如
getUTCHours()
就是根據(jù)世界時(shí)間返回小時(shí)數(shù)暮刃。
獲取一個(gè)時(shí)間點(diǎn)
設(shè)定一個(gè)時(shí)間點(diǎn)new Date(2017,4,22,22,48,20);
得出的是毫秒跨算。
也可以通過new Date('November 10,2013 22:3:0');
來獲取。主要是用來計(jì)算倒計(jì)時(shí)用到椭懊。
秒的轉(zhuǎn)換
秒轉(zhuǎn)為天:Math.floor(秒 / 86400)
秒轉(zhuǎn)為小時(shí):Math.floor(秒 % 86400 / 3600)
秒轉(zhuǎn)為分鐘:Math.floor(秒 % 86400 % 3600 / 60)
秒轉(zhuǎn)為秒:秒 % 60
英文的月份
一月 January诸蚕、二月 February、三月 March氧猬、四月 April背犯、五月 May、六月 June盅抚、七月 July漠魏、八月 August、九月 September妄均、十月 October柱锹、十一月 November、十二月 December丰包。
字符串的方法
length
字符串長度禁熏,字符串里的空格也占用一個(gè)長度
charAt()
返回字符串索引位置的字符,如果不傳參數(shù)默認(rèn)獲取第一個(gè)邑彪。
var str = 'abs';
alert(str.charAt(1)) // b
alert(str.charAt()) // a
charCodeAt()
返回字符串索引位置的字符的Unicode值琳要。使用方法同上顿仇。
charCodeAt()
使用方式和charAt相同撞牢,區(qū)別是返回的是字符的編碼值
String.fromCharCode()
參數(shù)里輸入一個(gè)編碼憔披,返回相對(duì)應(yīng)的字符,多個(gè)編碼用逗號(hào)間隔
indexOf()
返回查找字符在字符串中的索引位置有巧,沒找到返回-1释漆。
'str'.indexOf('t') //1
返回t在字符串str中的索引位置。
'strstr'.indexOf('t',2) // 4
從strstr字符串的索引2的位置r之后開始找t的位置剪决。不能是負(fù)數(shù)灵汪。
indexOf()每次只能返回查找到的第一個(gè)索引位置檀训,如果要查找所有的索引位置需要寫一個(gè)循環(huán)
var str = 'aaabaaababaaaaaaaabaaab';
var s = 'b';
var i = 0;
while( str.indexOf(s,i) != -1 ){
alert( str.indexOf(s,i) );
i = str.indexOf(s,i) + s.length;
}
這個(gè)循環(huán)會(huì)打印b在字符串中的所有索引位置
lastIndexOf()
和indexOf()相對(duì)應(yīng),indexOf()是從左往右找享言,lastIndexOf()是從右往左找峻凫。第二個(gè)參數(shù)索引值也是從右向左查找。
字符串的大小比較
中文字符也是可以進(jìn)行比較的览露,比如'山東' > '青島'
荧琼,比較的是第一個(gè)字符的編碼值的大小,也就是山的編碼值和青的編碼值的比較差牛,和后面的所有字符沒有關(guān)系命锄。
同樣的道理,'aaaabbbb' > 'c'
偏化,比較的是a和c的大小脐恩,和后面字符沒有關(guān)系。'1000' > '2'
比較的也是1和2的編碼值的大小侦讨。
substring()
截取類方法驶冒,對(duì)字符串當(dāng)中的某些文字進(jìn)行截取。負(fù)數(shù)會(huì)直接當(dāng)0來處理韵卤。
傳入一個(gè)參數(shù)時(shí)骗污,從字符串的參數(shù)數(shù)值的索引位置開始截取后面的所有內(nèi)容。
傳入兩個(gè)參數(shù)時(shí)沈条,截取字符串參數(shù)一的索引到參數(shù)二的索引之間的字符需忿。另外,如果第二個(gè)參數(shù)比第一個(gè)參數(shù)小那么會(huì)自動(dòng)調(diào)換兩個(gè)參數(shù)的位置蜡歹。
var str = 'abcdefg';
alert(str.substring(4); // efg
alert(str.substring(0,2); // ab
slice()
和substring()用法基本一樣屋厘。但是傳兩個(gè)參數(shù)時(shí)不會(huì)交換位置。
和substring()方法不同的是:
只傳入一個(gè)參數(shù)并且是負(fù)數(shù)季稳,那么就是從字符串的最后開始截取擅这。
傳入兩個(gè)參數(shù),通常第一個(gè)是負(fù)數(shù)第二個(gè)也是負(fù)數(shù)景鼠,截取兩個(gè)參數(shù)索引之間的字符
var str = 'abcdefg';
alert(str.slice(-1)) // f
alert(str.slice(-4,-2)) // cd
toUpperCase()
字符串轉(zhuǎn)為大寫,只能針對(duì)英文
toLowerCase()
字符串轉(zhuǎn)為小寫痹扇,只能針對(duì)英文
split()
將字符串分割為數(shù)組铛漓。參數(shù)是按照什么字符分割,如果不傳參數(shù)默認(rèn)會(huì)將整個(gè)字符串當(dāng)做一個(gè)數(shù)組的一個(gè)元素鲫构。
var str = 'www.baidu.com';
alert(str.split('.')) // ['www','baidu','com'];
var str1 = 'abc';
alert(str1.split('')) // ['a','b','c'];
第二個(gè)參數(shù)是限制截取多少段浓恶。
var str = '2017-05-27-19-47';
alert(str.split('-',3)); // ['2017','05','27']
replace()
替換字符串,第一個(gè)參數(shù)是要查找的字符串结笨,也可以通過正則表達(dá)式查找包晰。第二個(gè)參數(shù)是要替換的內(nèi)容湿镀。
var str = 'abcdefg';
console.log(str.replace('abc','ccc')) // 打印cccdefg
console.log(str.replace(/^a/,'ccc')) // 打印cccbcdefg
數(shù)組的方法
push()
在數(shù)組最后一位添加一個(gè)元素,返回值是增加后的數(shù)組的長度伐憾。
unshift()
在數(shù)組第一位插入一個(gè)元素勉痴,返回值是增加后的數(shù)組的長度。ie6树肃、ie7不支持這個(gè)方法的返回值蒸矛。
pop()
從數(shù)組的最后刪除一個(gè)元素,返回值是刪除的那個(gè)元素胸嘴。
shift()
從數(shù)組的開頭刪除一個(gè)元素雏掠,返回值是刪除的那個(gè)元素。
splice()
splice方法可以刪除劣像、替換乡话、添加
刪除時(shí)候可以傳兩個(gè)參數(shù),第一個(gè)是開始刪除的索引耳奕,第二個(gè)是刪除的長度绑青。返回值是刪除的元素。
替換的話將要替換的內(nèi)容寫在第二個(gè)參數(shù)之后吮铭。返回值僅是被刪除的內(nèi)容时迫。
添加的時(shí)候第一個(gè)參數(shù)是要添加的后面那個(gè)元素的索引,第二個(gè)參數(shù)是0谓晌,代表不替換掠拳,要添加的元素寫在第二個(gè)參數(shù)之后。沒有返回值
var arr = ['a,'b','c','d','e'];
arr.splice(0,2) // arr = ['c','d','e']
arr.splice(0,2,'z','x') // arr = ['z','x','c','d','e']
arr.splice(1,0,'x') // arr = ['a','x','b','c','d','e']
slice()
返回從原數(shù)組中指定開始下標(biāo)到結(jié)束下標(biāo)之間的元素組成的新數(shù)組纸肉。只傳一個(gè)參數(shù)那就是獲取到最后溺欧,不會(huì)改變?cè)瓟?shù)組
var arr = [1,2,3,4,5,6];
console.log(arr.slice(2)) // 打印[3,4,5,6]
console.log(arr.slice(2,4)) // 打印[3,4]
sort()
對(duì)數(shù)組進(jìn)行排序,默認(rèn)全部按照字符串的規(guī)則進(jìn)行排序柏肪,會(huì)將數(shù)字轉(zhuǎn)為字符串姐刁,然后按照字符串的比較方式,由小到大排序烦味。
var arr = [4,3,2,30];
arr.sort(); // arr = [2,3,30,4]
要按照數(shù)值類型來排序的話需要在sort內(nèi)部寫一個(gè)函數(shù)
arr = [4,3,2,30];
arr.sort(function(a,b){
return a - b
})
這里用a-b代表從小到大排序聂使,意思是第一個(gè)數(shù)減第二個(gè)數(shù)。
也可以b-a是從大到小排序谬俄。是第二個(gè)數(shù)減第一個(gè)數(shù)柏靶。
只要return 為true,那么就會(huì)換位置溃论。
join()
將數(shù)組轉(zhuǎn)為字符串屎蜓,用傳入的參數(shù)去分割數(shù)組每個(gè)元素,組成一個(gè)字符串钥勋,如果不傳參數(shù)默認(rèn)用逗號(hào)分割炬转。
concat()
將多個(gè)數(shù)組拼接起來辆苔,參數(shù)可以傳過個(gè),傳幾個(gè)就連接幾個(gè)扼劈,會(huì)拼成一個(gè)新的數(shù)組驻啤,不會(huì)改變?cè)瓉淼臄?shù)組。
var arr1 = [1,2,3];
var arr2 = [4,5,6];
alert(arr1.concat(arr2)); // [1,2,3,4,5,6]
reverse()
顛倒數(shù)組內(nèi)部元素的位置测僵。對(duì)字符串也可以進(jìn)行操作街佑,只是從頭到尾顛倒位置。不會(huì)進(jìn)行比較捍靠。
var arr = [1,2,3,4];
arr.reverse(); // arr = [4,3,2,1]
toString()
把數(shù)組轉(zhuǎn)換為字符串沐旨,字符串包含逗號(hào)。
Math系列方法
Math.round()
對(duì)參數(shù)進(jìn)行四舍五入操作榨婆。
Math.abs()
返回參數(shù)的絕對(duì)值磁携。
Math.ceil()
對(duì)參數(shù)進(jìn)行向上取整
Math.floor()
對(duì)參數(shù)進(jìn)行向下取整
Math.max()
傳兩個(gè)參數(shù),返回兩數(shù)中的最高值
Math.min()
傳兩個(gè)參數(shù)良风,返回兩數(shù)中的最低值
Math.pow()
傳遞兩個(gè)參數(shù)谊迄,第二個(gè)參數(shù)是冪,返回第一個(gè)參數(shù)的幾次冪
Math.sqrt()
返回參數(shù)的平方根
Math.random()
產(chǎn)生0-1之間的隨機(jī)數(shù)
隨機(jī)數(shù)方法經(jīng)常使用烟央,比如要生成5-10之間的隨機(jī)數(shù)
當(dāng)求一個(gè)x-y之間的數(shù)公式就是:Math.round( Math.random() * ( y - x ) + x )
Math.round( Math.random() * 5 + 5 )
通常第二個(gè)數(shù)是區(qū)間中下限的數(shù)统诺,第一個(gè)數(shù)是區(qū)間上限的數(shù)與第二個(gè)加的數(shù)的差值。現(xiàn)在生成的就是5-10之間的隨機(jī)數(shù)疑俭,并且包括5和10本身粮呢,如果想不包含5那就調(diào)整第一個(gè)數(shù),想不包含10那就調(diào)整第二個(gè)數(shù)钞艇。