《HTML教程》-5.4教學材料_第1頁
《HTML教程》-5.4教學材料_第2頁
《HTML教程》-5.4教學材料_第3頁
《HTML教程》-5.4教學材料_第4頁
《HTML教程》-5.4教學材料_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

5.4.1數(shù)組聲明數(shù)組聲明有兩種方式,第一種是字面量聲明數(shù)組,第二種是new關(guān)鍵字聲明。如:vararr1=[];//聲明一空數(shù)組vararr2=newArray();//聲明一空數(shù)組vararr3=[1,3,[1,3,5],5];//聲明數(shù)組并賦初值vararr4=newArray(6,7,8,9);//聲明數(shù)組并賦初值vararr5=newArray(10);//聲明可以包含10個元素的數(shù)組注意,主張避免采用new關(guān)鍵字聲明數(shù)組,推薦使用字面量方式聲明數(shù)組。如,vara=newArray();//聲明空數(shù)組,不推薦vara=[];//聲明空數(shù)組,推薦。5.4.2數(shù)組元素訪問數(shù)組元素使用下標的方式進行訪問,數(shù)組的下標從0開始,語法格式如下:

數(shù)組名[下標];數(shù)組元素訪問可用于引用數(shù)組元素的值,也可用于向數(shù)組元素賦值。如,document.write(數(shù)組名[下標]);//輸出指定元素的值。

數(shù)組名[下標]=值;但是要注意的是,JS數(shù)組的下標不要求是連續(xù)的,也就是說JS數(shù)組中各元素之間不一定是相鄰的,可以隔幾個再賦值。如,vararr=[];//聲明空數(shù)組arr[10]=“abc”;//對第11個元素進行賦值,而前10個元素為空5.4.3數(shù)組常用方法

JavaScript的數(shù)組提供了許多實用的數(shù)組操作方法,方法數(shù)組的操作,現(xiàn)總結(jié)如下,如表5-1所示。ECMAScript5新增了一些集合方法,如表5-2所示。這是方法是“面向函數(shù)”的,關(guān)于JavaScript“面向函數(shù)”的編程,請參閱有關(guān)書籍。除了上面的方法之外,數(shù)組還有一個length屬性,它表示數(shù)組中最大下標值加1。在JS中它不一定等于數(shù)組元素的個數(shù),因為數(shù)組的下標可以是不連續(xù)的。下面以一個例子說明數(shù)組方法的用法。例子可能比較長,各位讀者要耐心閱讀,結(jié)合注釋、運行結(jié)果(直接運行隨書源碼的Listing5-4.html)、表5-1、5-2和清單后面的說明仔細理解,這對于Ajax編程是十分重要的。實例代碼如清單5-4所示。恭喜你仔細讀完了清單5-4中的一百多行代碼。許多知識通過代碼一看就明白,下面對于需要解釋和重要的知識點再作進一步的解釋。(1)數(shù)組聲明與長度

首先,數(shù)組聲明中使用new關(guān)鍵字聲明數(shù)組時,構(gòu)造函數(shù)Array()中可以沒有參數(shù),也可以指定1個數(shù)字參數(shù),此時該數(shù)字為數(shù)組的長度,而不是1個數(shù)組元素,如vararray=newArray(10);是聲明array大小為10的數(shù)組,而不是只包含一個元素10的數(shù)組。但如果參數(shù)多于1個,則代表聲明初始元素為所有參數(shù)的數(shù)組。如vararray=newArray(3,4);聲明包含元素3和4的數(shù)組,而不是聲明一個3行4列的二維數(shù)組。這一點要特別注意,與其他編程語言不同。要聲明二維數(shù)組,可以把一維數(shù)組中的元素聲明為數(shù)組。還有一點就是,二維數(shù)組中的第二維長度可以不等,也與其他編程語言不同。第二,數(shù)組的長度屬性length。它是一個可讀可寫的屬性,也就是說我們可以隨時修改一個數(shù)組的長度。但要注意如果設置的長度比元素個數(shù)小,則會丟棄后面的元素。如果設置的長度比元素個數(shù)多,則多出來的元素為undefined。(2)sort函數(shù)sort函數(shù)默認情況下按照字母(必要時先進行類型轉(zhuǎn)換)順序?qū)?shù)組進行排序。可以指定排序規(guī)則,即指定一個函數(shù)作為排序規(guī)則。排序規(guī)則如下:arr3.sort(function(a,b){//從大到小 returnb-a;})如果b–a>0,表示b大于a;如果b–a<0表示b小于a;如果b–a=0,則表示b等于a。按照這個函數(shù)的返回結(jié)果對a和b進行排序。(3)slice()函數(shù)這個函數(shù)的參數(shù)比較多,這里再說明一下。函數(shù)的原型如下:arrayObject.splice(index,howmany,item1,.....,itemX)參數(shù)說明:◆arrayObject:調(diào)用splice函數(shù)的數(shù)組對象?!鬷ndex:刪除元素的起始位置?!鬶owmany:刪除元素的個數(shù)?!鬷tem1,…,itemX:新插入數(shù)組的元素,可以是任意類型,也可以是數(shù)組。

◆返回值:被刪除元素組成的數(shù)組。如清單中的以下代碼://arr3=[8,7,6]vardeletedElem=arr3.splice(1,2,[3,4,5],3,4);//arr3=[8,[3,4,5],3,4]表示從第2個元素(第一個參數(shù)為1,從零開始)開始刪除2個元素(第二個參數(shù)為2),即7和6,然后插入[3,4,5]、3和4三個元素,所以arr3變成了[8,[3,4,5],3,4],并返回刪除元素組成的數(shù)組[7,6]。(4)reduce函數(shù)reduce函數(shù)接收兩個參數(shù),第一個參數(shù)為用于精簡的函數(shù),第二個參數(shù)為傳給精簡函數(shù)的初始值,為可選參數(shù),若沒有指定,則以數(shù)組的第一個元素為初始值。返回值為經(jīng)過精簡計算的結(jié)果。關(guān)于精簡函數(shù)的說明。這里的精簡函數(shù),也就是傳遞給reduce函數(shù)的參數(shù)函數(shù),它的參數(shù)與前面的forEach和map函數(shù)的參數(shù)函數(shù)不同,各參數(shù)含義如下:function(累積結(jié)果,數(shù)組元素值,下標,數(shù)組引用){}其中,累積結(jié)果最初為reduce第二個參數(shù)的值,如果沒有指定,則以數(shù)組的第一個元素值為準。為了直觀的理解這4個參數(shù)的含義,我們對reduce函數(shù)求數(shù)組元素乘積的代碼修改如下,就可以在控制臺觀察到每個循環(huán)中4個參數(shù)的變化。varr=[1,2,3,4].reduce(function(s,v,i,a){ console.log("s="+s); console.log("v="+v); console.log("i="+i);console.log('a['+i+']='+a[i]); returns*v;},1);執(zhí)行過程各參數(shù)變化如表5-3所示。表5-3reduce函數(shù)在數(shù)組[1,2,3,4]上的執(zhí)行過程調(diào)用次數(shù)累積結(jié)果s元素值v下標i數(shù)組a[i]返回值s*v1110112121223232364643424(5)“面向函數(shù)”的函數(shù)總結(jié)

所謂面向函數(shù)的函數(shù)是指表5-2中的函數(shù),也就是ECMAScript5新增的函數(shù)。這些函數(shù)除indexOf和lastIndexOf之外,都接收一個函數(shù)參數(shù),這個函數(shù)參數(shù)稱為參數(shù)函數(shù)。參數(shù)函數(shù)的一般格式如下:functionfunName(value,index,array){}參數(shù)說明:◆funName:函數(shù)名,也可使用匿名函數(shù),如清單5-4中的參數(shù)函數(shù)?!魐alue:調(diào)用者數(shù)組中本次調(diào)用的當前元素的值?!鬷ndex:調(diào)用者數(shù)組本次調(diào)用的下標?!鬭rray:調(diào)用者數(shù)組的引用。但reduce函數(shù)例外,其參數(shù)函數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論