概念: 就是將若干個(gè)數(shù)據(jù)以一定的順序放在一起的一個(gè)集合體,整體上就稱之為“數(shù)組”。數(shù)組就是一列數(shù)據(jù)的有序排列的集合。
定義形式:
var arr1 = new Array(1, 5, 8, 7, 2, 10); //定義了一個(gè)數(shù)組,其中具有6個(gè)數(shù)據(jù) var arr2 = new Array(); //只是單純地定義了一個(gè)數(shù)組(名),但沒(méi)有給值(數(shù)據(jù)),即現(xiàn)在是空的 var arr3 = [1, 5, 8, 7, 2, 10]; //同arr1,只是一種簡(jiǎn)寫(xiě)的定義法。 var arr4 = [ ]; //同arr2,也是一個(gè)空數(shù)組。
數(shù)組的使用:所謂使用其實(shí)是指對(duì)數(shù)組的每一項(xiàng)的使用。
取值:
var v1 = arr1[0]; //取得數(shù)組arr1中的第一項(xiàng),0叫做下標(biāo) var v2 = arr3[3] + 10; //取得數(shù)組arr3中的第4項(xiàng),4叫做下標(biāo) ——所謂下標(biāo),其實(shí)就是數(shù)組的每一個(gè)數(shù)據(jù)的“順序號(hào)”——從0開(kāi)始編號(hào),是連續(xù)的整數(shù)。
賦值:
arr1[0] = 10; //給數(shù)組arr1的第一項(xiàng)賦值為10,此時(shí)其實(shí)也就是相當(dāng)于修改了其值,也可以說(shuō)類似給一個(gè)變量重新賦值。
arr2[0] = 22; arr2[1] = 33.3; arr2[2] = “444”; arr2[3] = “abc”; arr2[4] = true;
//此時(shí)arr2這個(gè)數(shù)組相當(dāng)于這樣: [ 22, 33.3, “444”, “abc”, true ]
數(shù)組的“視覺(jué)形象”(以arr3為例):
下標(biāo)值: 0 1 2 3 4 5數(shù)據(jù)值: 1 5 8 7 2 10
取得一個(gè)數(shù)組的長(zhǎng)度——就是其中的數(shù)據(jù)的個(gè)數(shù)的語(yǔ)法為:
var v1 = 數(shù)組名.length;
特別注意:數(shù)組的最大下標(biāo)是數(shù)組的長(zhǎng)度減1。
數(shù)組遍歷的通常模式:
var len = 數(shù)組名.length;
for(var i = 0; i < len; i++)
{
//這里就是對(duì)數(shù)組的每一項(xiàng)的處理,每一項(xiàng)的寫(xiě)法是: 數(shù)組名[i]
}
數(shù)組遍歷的另一種形式——for in循環(huán)語(yǔ)句。
for( var v1 in 數(shù)組名arr1 )
{
//這里就是循環(huán)體,是專門(mén)針對(duì)數(shù)組arr1的遍歷循環(huán),其中v1的值就是表示數(shù)組的每一項(xiàng)的下標(biāo)值。
//v1只是一個(gè)“臨時(shí)變量”,代表每一項(xiàng)下標(biāo),依次會(huì)從0變化到數(shù)組的最大下標(biāo)。
}
“二維”數(shù)組:
var v1 = [2, 5, 1, 5];var v2 = [5, 1, 6, 8];var v3 = [8, 0, 9, 7];var v4 = [v1, v2, v3];var v5 = [ [2, 5, 1, 5], [5, 1, 6, 8], [8, 0, 9, 7]];
——v4和v5其實(shí)沒(méi)有任何區(qū)別,這兩個(gè)都可以稱為“二維數(shù)組“。
“二維”數(shù)組元素的操作:
取值:
var s1 = v5[0][1]; //5 //相當(dāng)于取到v5這個(gè)數(shù)組中第一項(xiàng)(這還是一個(gè)數(shù)組)的第2項(xiàng)。
var s2 = v5[2][3] + 100; //107
賦值:
v5[0][1] = 200;
v5[2][3] = 300;
數(shù)組對(duì)象的常用方法:什么叫方法:方法其實(shí)就是函數(shù)!——只是如果一個(gè)函數(shù)“隸屬于”某個(gè)“對(duì)象”,則稱這個(gè)函數(shù)為該對(duì)象的方法。
function maibao(){ document.write(“啦啦啦,我是賣(mài)報(bào)的小行家,賣(mài)報(bào)啦賣(mài)報(bào)啦。”);}var myDreamGirl = { name: “小花”, age:18, edu:”大學(xué)”, sex:”女”,nengli1: function (){ document.write(“洗衣!”); } ,nengli2: function (){ document.write(“做飯!”); } ,nengli3: maibao};var v1 = [2, 5, 1, 5];var v2 = [5, 1, 6, 8];
從嚴(yán)格的角度來(lái)說(shuō),數(shù)組也是一種對(duì)象——甚至字符串也是對(duì)象。
v1作為對(duì)象,就有屬性和方法:
屬性:
某數(shù)組.length: 表示該數(shù)組對(duì)象的長(zhǎng)度
方法:
某數(shù)組.concat(其他數(shù)組):將兩個(gè)數(shù)組連接起來(lái)成為一個(gè)新的“更長(zhǎng)”的數(shù)組。 var s1 = v1.concat( v2); //此時(shí)s1是這樣一個(gè)數(shù)組: [2, 5, 1, 5, 5, 1, 6, 8];
某數(shù)組.join(“字符串”):將數(shù)組中的所有項(xiàng)以指定的字符“串接起來(lái)”成為“長(zhǎng)的”一個(gè)字符串。
vars2 = v1.join(“//”); //結(jié)果s2為字符串 “2//5//1//5”
某數(shù)組.pop(); //將該數(shù)組的最后一項(xiàng)“移除”(刪除),并返回該項(xiàng)數(shù)據(jù),即該數(shù)組少了一項(xiàng)
var s3 = v1.pop(); //結(jié)果v1只剩這個(gè):[2,5,1]; s3的值是5
某數(shù)組.push(新數(shù)據(jù)項(xiàng)d1); //將新的數(shù)據(jù)d1添加到該數(shù)組的最后位置,即數(shù)組多了一項(xiàng)。
var s4 = v1.push( 55 ); //v1此時(shí)為:[2,5,1, 55], s4的值為新數(shù)組的長(zhǎng)度,即4
某數(shù)組.shift(); //將該數(shù)組的第一項(xiàng)“移除”(刪除),并返回該項(xiàng)數(shù)據(jù),即該數(shù)組少了一項(xiàng)
var s5 = v1.shift(); //結(jié)果v1只剩這個(gè):[5, 1,55]; s5的值是2
某數(shù)組.unshift(新數(shù)據(jù)項(xiàng)d1); //將新的數(shù)據(jù)d1添加到該數(shù)組的最前位置,即數(shù)組多了一項(xiàng)。
var v6 = v1.unshift( 66 ); //v1此時(shí)為:[66, 5, 1, 55], s6的值為新數(shù)組的長(zhǎng)度,即4
Javascript語(yǔ)言是一門(mén)基于對(duì)象的語(yǔ)言。
字符串對(duì)象:var str1 = new String(“abcdefgabc”); //這是一個(gè)“字符串對(duì)象” var str2 = “abcdefgabc”; //這個(gè)字符串跟前面str1幾乎沒(méi)有區(qū)別字符串對(duì)象的屬性: .length——獲得一個(gè)字符串的長(zhǎng)度(也就是字符個(gè)數(shù))字符串對(duì)象的方法:1. str1.charAt( n ); ——獲得字符串str1中位置為n的那個(gè)字符(字符的位置也是從0開(kāi)始算起)var s1 = str1.charAt( 3 ); //s1的結(jié)果是:”d”2. str1.toUpperCase(); ——獲取str1全部轉(zhuǎn)換為大寫(xiě)的結(jié)果var s2 = str1.toUpperCase(); //s2的結(jié)果是:”ABCDEFGABC”3. str1.toLowerCase(); ——獲取str1全部轉(zhuǎn)換為小寫(xiě)的結(jié)果var s3 = str1.toLowerCase(); //s3的結(jié)果是:”abcdefgabc”4. str1.replace(“字符1”, “字符2”); ——將str1中的“字符1”替換為“字符2”var s4 = str1.replace(“cd”, “999”); //s4的結(jié)果是:”ab999efgabc”5. str1.indexOf(“字符1”); ——獲得“字符1”在str1中第一次出現(xiàn)的位置,如果沒(méi)有出現(xiàn),結(jié)果是-1var s5 = str1.indexOf(“ab”); //s5的結(jié)果是06. str1.lastIndexOf(““字符1”); ——獲得“字符1”在str1中最后一次出現(xiàn)的位置,如果沒(méi)有出現(xiàn),結(jié)果是-1var s6 = str1.lastIndexOf(“ab”); //s6的結(jié)果是77. str1.substr(n, m ) ——取得str1中從位置n開(kāi)始的m個(gè)字符,m可以省略,則表示從位置n一直取到字符串的最后——注意,這種“取”并不影響str1這個(gè)原始字符var s7 = str1.substr(2, 4); //s7為:”cdef”8. str1.substring( n, m )——取得str1中從位置n到位置m的前一個(gè)字符。var s8 = str1.substring(2, 4); //s8為:”cd”9. str1.split(“字符1”) ——將str1以指定的“字符1”為分界,分割成一個(gè)數(shù)組,結(jié)果是一個(gè)數(shù)組var s9 = str1.split(“b”); //s9的結(jié)果是一個(gè)數(shù)組:[“a”, “cdefga”, “c”]Math對(duì)象
Math對(duì)象是一個(gè)系統(tǒng)內(nèi)部定義的對(duì)象,我們無(wú)需去“新建一個(gè)Math對(duì)象”——跟string對(duì)象和array對(duì)象不同。即Math對(duì)象是直接使用的。
我們學(xué)習(xí)Math對(duì)象,無(wú)非是學(xué)習(xí)一些常見(jiàn)的數(shù)學(xué)處理函數(shù)——這里當(dāng)就叫做方法了:
屬性:
Math.PI——代表圓周率這個(gè)“常數(shù)”
方法:
1. Math.max(數(shù)值1,數(shù)值2,…..) ——求得若干個(gè)數(shù)值中的最大值。2. Math.min(數(shù)值1,數(shù)值2,…..) ——求得若干個(gè)數(shù)值中的最小值。3. Math.abs( 數(shù)值1) ——求得數(shù)值1的絕對(duì)值4. Math.pow( x,y) ——求得數(shù)值x的y次方,也就是“冪運(yùn)算”5. Math.sqrt( x ) ——求得x的開(kāi)方6. Math.round( x ) ——求得x的四舍五入的結(jié)果值;7. Math.floor( x ) ——求得x的向下取整的結(jié)果,即找到不大于x的一個(gè)最大的整數(shù)。a) Math.floor( 3.1 ) ? 3b) Math.floor( 3.8 ) ? 3c) Math.floor( 3 ) ? 3d) Math.floor( -3.1 ) ? -4e) Math.floor( -3.8 ) ? -48. Math.ceil( x ) ——求得x的向上取整的結(jié)果,即找到不小于x的一個(gè)最小的整數(shù)a) Math.floor( 3.1 ) ? 4b) Math.floor( 3.8 ) ? 4c) Math.floor( 3 ) ? 3d) Math.floor( -3.1 ) ? -3e) Math.floor( -3.8 ) ? -39. Math.random() ——獲得一個(gè)0~1范圍中的隨機(jī)“小數(shù)”,含0,但不含1//獲得兩個(gè)整數(shù)(n1,n2)之間的隨機(jī)整數(shù)的通用做法: var v1 = Math.random() v1 = v1 * (n2-n1+1); v1 = Math.floor( v1 ) + n1; //此時(shí)v1就是結(jié)果//將上述3步寫(xiě)出一步就是(通用公式): var v1 = Math.floor( Math.random() * (n2-n1+1) ) + n1
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注