title: javascript(時間、數(shù)組、字符串方法)
date: 2017-06-01 10:25:43
tags: javascript筆記
日期對象
常用方法
new Date() 獲取當前時間
以下獲取的都是數(shù)值類型,get是獲取時間,將get改為set后面的不變就是設(shè)置時間。
getFullYear() 獲取年
getMonth() 獲取月份,從0開始算
getDate() 獲取天
getDay() 獲取星期幾,0是周日
getHours() 獲取小時
getMinutes() 獲取分鐘
getSeconds() 獲取秒
getMilliseconds() 獲取毫秒
getTime() 時間戳,返回從1970年1月1日0點0分0秒0毫秒開始計算的毫秒時間。
getTimezoneOffset() 獲取本地時間與格林威治標準時間的分鐘差。
parse() 返回從1970年1月1日到指定日期(字符串)的毫秒數(shù)。
UTC() 根據(jù)世界時間返回從1970年1月1日到指定日期(字符串)的毫秒數(shù)。
以上獲取時間的方法在get后加上UTC就是根據(jù)世界時間獲取,例如
getUTCHours()就是根據(jù)世界時間返回小時數(shù)。
獲取一個時間點
設(shè)定一個時間點new Date(2017,4,22,22,48,20); 得出的是毫秒。
也可以通過new Date('November 10,2013 22:3:0');來獲取。主要是用來計算倒計時用到。
秒的轉(zhuǎn)換
秒轉(zhuǎn)為天:Math.floor(秒 / 86400)
秒轉(zhuǎn)為小時: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
字符串長度,字符串里的空格也占用一個長度
charAt()
返回字符串索引位置的字符,如果不傳參數(shù)默認獲取第一個。
var str = 'abs';
alert(str.charAt(1)) // b
alert(str.charAt()) // a
charCodeAt()
返回字符串索引位置的字符的Unicode值。使用方法同上。
charCodeAt()
使用方式和charAt相同,區(qū)別是返回的是字符的編碼值
String.fromCharCode()
參數(shù)里輸入一個編碼,返回相對應(yīng)的字符,多個編碼用逗號間隔
indexOf()
返回查找字符在字符串中的索引位置,沒找到返回-1。
'str'.indexOf('t') //1返回t在字符串str中的索引位置。
'strstr'.indexOf('t',2) // 4從strstr字符串的索引2的位置r之后開始找t的位置。不能是負數(shù)。
indexOf()每次只能返回查找到的第一個索引位置,如果要查找所有的索引位置需要寫一個循環(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;
}
這個循環(huán)會打印b在字符串中的所有索引位置
lastIndexOf()
和indexOf()相對應(yīng),indexOf()是從左往右找,lastIndexOf()是從右往左找。第二個參數(shù)索引值也是從右向左查找。
字符串的大小比較
中文字符也是可以進行比較的,比如'山東' > '青島',比較的是第一個字符的編碼值的大小,也就是山的編碼值和青的編碼值的比較,和后面的所有字符沒有關(guān)系。
同樣的道理,'aaaabbbb' > 'c',比較的是a和c的大小,和后面字符沒有關(guān)系。'1000' > '2'比較的也是1和2的編碼值的大小。
substring()
截取類方法,對字符串當中的某些文字進行截取。負數(shù)會直接當0來處理。
傳入一個參數(shù)時,從字符串的參數(shù)數(shù)值的索引位置開始截取后面的所有內(nèi)容。
傳入兩個參數(shù)時,截取字符串參數(shù)一的索引到參數(shù)二的索引之間的字符。另外,如果第二個參數(shù)比第一個參數(shù)小那么會自動調(diào)換兩個參數(shù)的位置。
var str = 'abcdefg';
alert(str.substring(4); // efg
alert(str.substring(0,2); // ab
slice()
和substring()用法基本一樣。但是傳兩個參數(shù)時不會交換位置。
和substring()方法不同的是:
只傳入一個參數(shù)并且是負數(shù),那么就是從字符串的最后開始截取。
傳入兩個參數(shù),通常第一個是負數(shù)第二個也是負數(shù),截取兩個參數(shù)索引之間的字符
var str = 'abcdefg';
alert(str.slice(-1)) // f
alert(str.slice(-4,-2)) // cd
toUpperCase()
字符串轉(zhuǎn)為大寫,只能針對英文
toLowerCase()
字符串轉(zhuǎn)為小寫,只能針對英文
split()
將字符串分割為數(shù)組。參數(shù)是按照什么字符分割,如果不傳參數(shù)默認會將整個字符串當做一個數(shù)組的一個元素。
var str = 'www.baidu.com';
alert(str.split('.')) // ['www','baidu','com'];
var str1 = 'abc';
alert(str1.split('')) // ['a','b','c'];
第二個參數(shù)是限制截取多少段。
var str = '2017-05-27-19-47';
alert(str.split('-',3)); // ['2017','05','27']
replace()
替換字符串,第一個參數(shù)是要查找的字符串,也可以通過正則表達式查找。第二個參數(shù)是要替換的內(nèi)容。
var str = 'abcdefg';
console.log(str.replace('abc','ccc')) // 打印cccdefg
console.log(str.replace(/^a/,'ccc')) // 打印cccbcdefg
數(shù)組的方法
push()
在數(shù)組最后一位添加一個元素,返回值是增加后的數(shù)組的長度。
unshift()
在數(shù)組第一位插入一個元素,返回值是增加后的數(shù)組的長度。ie6、ie7不支持這個方法的返回值。
pop()
從數(shù)組的最后刪除一個元素,返回值是刪除的那個元素。
shift()
從數(shù)組的開頭刪除一個元素,返回值是刪除的那個元素。
splice()
splice方法可以刪除、替換、添加
刪除時候可以傳兩個參數(shù),第一個是開始刪除的索引,第二個是刪除的長度。返回值是刪除的元素。
替換的話將要替換的內(nèi)容寫在第二個參數(shù)之后。返回值僅是被刪除的內(nèi)容。
添加的時候第一個參數(shù)是要添加的后面那個元素的索引,第二個參數(shù)是0,代表不替換,要添加的元素寫在第二個參數(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ù)組中指定開始下標到結(jié)束下標之間的元素組成的新數(shù)組。只傳一個參數(shù)那就是獲取到最后,不會改變原數(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()
對數(shù)組進行排序,默認全部按照字符串的規(guī)則進行排序,會將數(shù)字轉(zhuǎn)為字符串,然后按照字符串的比較方式,由小到大排序。
var arr = [4,3,2,30];
arr.sort(); // arr = [2,3,30,4]
要按照數(shù)值類型來排序的話需要在sort內(nèi)部寫一個函數(shù)
arr = [4,3,2,30];
arr.sort(function(a,b){
return a - b
})
這里用a-b代表從小到大排序,意思是第一個數(shù)減第二個數(shù)。
也可以b-a是從大到小排序。是第二個數(shù)減第一個數(shù)。
只要return 為true,那么就會換位置。
join()
將數(shù)組轉(zhuǎn)為字符串,用傳入的參數(shù)去分割數(shù)組每個元素,組成一個字符串,如果不傳參數(shù)默認用逗號分割。
concat()
將多個數(shù)組拼接起來,參數(shù)可以傳過個,傳幾個就連接幾個,會拼成一個新的數(shù)組,不會改變原來的數(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)部元素的位置。對字符串也可以進行操作,只是從頭到尾顛倒位置。不會進行比較。
var arr = [1,2,3,4];
arr.reverse(); // arr = [4,3,2,1]
toString()
把數(shù)組轉(zhuǎn)換為字符串,字符串包含逗號。
Math系列方法
Math.round()
對參數(shù)進行四舍五入操作。
Math.abs()
返回參數(shù)的絕對值。
Math.ceil()
對參數(shù)進行向上取整
Math.floor()
對參數(shù)進行向下取整
Math.max()
傳兩個參數(shù),返回兩數(shù)中的最高值
Math.min()
傳兩個參數(shù),返回兩數(shù)中的最低值
Math.pow()
傳遞兩個參數(shù),第二個參數(shù)是冪,返回第一個參數(shù)的幾次冪
Math.sqrt()
返回參數(shù)的平方根
Math.random()
產(chǎn)生0-1之間的隨機數(shù)
隨機數(shù)方法經(jīng)常使用,比如要生成5-10之間的隨機數(shù)
當求一個x-y之間的數(shù)公式就是:Math.round( Math.random() * ( y - x ) + x )
Math.round( Math.random() * 5 + 5 )
通常第二個數(shù)是區(qū)間中下限的數(shù),第一個數(shù)是區(qū)間上限的數(shù)與第二個加的數(shù)的差值。現(xiàn)在生成的就是5-10之間的隨機數(shù),并且包括5和10本身,如果想不包含5那就調(diào)整第一個數(shù),想不包含10那就調(diào)整第二個數(shù)。