javascript基礎(chǔ)3尚學(xué)堂百戰(zhàn)程序員_第1頁
javascript基礎(chǔ)3尚學(xué)堂百戰(zhàn)程序員_第2頁
javascript基礎(chǔ)3尚學(xué)堂百戰(zhàn)程序員_第3頁
javascript基礎(chǔ)3尚學(xué)堂百戰(zhàn)程序員_第4頁
javascript基礎(chǔ)3尚學(xué)堂百戰(zhàn)程序員_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)組課程介紹課程大綱1.數(shù)組的概念2.數(shù)組的特點3.數(shù)組的調(diào)用4.數(shù)組的方法5.二維數(shù)組1.數(shù)組的概念 數(shù)組(array)是按照一定順序排列的一組值,每個值都擁有自己的編號,編號從0開始。整個數(shù)組用方括號來表示。 語法:vararr=[item1,item2,item3]; 上述代碼中的item1、item2和item3元素就構(gòu)成一個數(shù)組。兩端的方括號是數(shù)組的標(biāo)志。因為數(shù)組元素編號從0開始,所以item1是數(shù)組的第0個元素。ps:item1、item2和item3是泛指,javascript中的數(shù)組元素可以是任何類型的數(shù)據(jù)。

vararr=[‘123’,123,true,null,undefined,{'name':'frank'}]; 這是數(shù)組么?2.數(shù)組的特點(1)數(shù)組的本質(zhì)(2)數(shù)組的長度(3)數(shù)組的遍歷(4)數(shù)組的空位(5)數(shù)組的'刪除'(1)數(shù)組的本質(zhì) 本質(zhì)上,數(shù)組是對象類型的一種特殊表現(xiàn)形式。因此創(chuàng)建的時候我們可以使用new方式來創(chuàng)建。 varnameArr=newArray('LiLei','HanMeiMei','Poliy');//['LiLei','HanMeiMei','Poliy']typeof運算符會返回數(shù)組的類型是object。typeofnameArr//"object"(2)數(shù)組的長度 要討論數(shù)組的長度問題就要搞清楚數(shù)組在內(nèi)存中的存放方式。

前面我們說過,javascript中的數(shù)組元素可以是任何數(shù)據(jù)類型的。而在計算機中不同的數(shù)據(jù)類型數(shù)據(jù)是放在不同存儲區(qū)的。舉例來說:……內(nèi)存字符串類型數(shù)據(jù)存儲區(qū)數(shù)字類型數(shù)據(jù)存儲區(qū)對象類型數(shù)據(jù)存儲區(qū) 因此javascript中的數(shù)組元素是在內(nèi)存中的存儲位置不連續(xù)的。 但是我們又不能按照內(nèi)存地址來訪問數(shù)組元素,那樣會造成編程過程中的災(zāi)難。所以為了解決這個問題,我們按照下標(biāo)的方式來對數(shù)組元素進行標(biāo)記。 所以我們計算數(shù)組長度的時候只需要計算數(shù)組元素的個數(shù)即可。總結(jié):javascript數(shù)組在內(nèi)存中的存儲位置是不連續(xù)的,但是數(shù)組的下標(biāo)是連續(xù)的。根據(jù)上述原理,javascript給數(shù)組提供了一個.length屬性來計算數(shù)組長度。 語法:arr.length

varageArr=[18,24,30]; console.log(ageArr.length);//3length是一個可寫屬性。 如果設(shè)置length長度小于數(shù)組本身長度,那么多余元素舍棄。 如果設(shè)置length長度大于數(shù)組本身長度,那么缺少元素用空位補齊。 如果設(shè)置length長度不是合法數(shù)值,那么會報錯Invalidarraylength varageArr=[18,24,30]; ageArr.length=2; console.log(ageArr.length);//2

console.log(ageArr);//[18,24]varageArr=[18,24,30];ageArr.length=-1;console.log(age.length);//UncaughtRangeError:Invalidarraylength(…) varageArr=[18]; ageArr.length=3; console.log(ageArr.length);//3 console.log(ageArr);//[18] console.log(ageArr[1]);//undefined(3)數(shù)組的遍歷 如果想要連續(xù)訪問數(shù)組中的每個元素,可以使用forin快速遍歷。

varheroArr=['GreenJuPeople','BlackGuaFu','MetalXia']; for(varindexinheroArr){ console.log(heroArr[index]); }

GreenJuPeople BlackGuaFu MetalXiaps:需要引起注意的是,forin循環(huán)遍歷數(shù)組的時候,for循環(huán)中的index表示的數(shù)組的下標(biāo)。并不是表示數(shù)組元素!(4)數(shù)組的空位 當(dāng)數(shù)組的某個位置是空元素,即兩個逗號之間沒有任何值,我們稱該數(shù)組存在空位(hole)。

varcountryNameArr=['China','','Japan']; countryNameArr.length//3

有趣的是:如果最后一個元素后面有逗號,這種情況并不會產(chǎn)生空位。也就是說最后一個元素后面的逗號有和沒有結(jié)果都是一樣的。(當(dāng)然這種寫法并不推薦。)

varcountryName=['China','American','Japan',]; countryName.length//3(5)數(shù)組的'刪除'

delete命令能夠刪除數(shù)組中的元素的值,從而形成空位。但是delete命令并不會影響length的屬性。vargirlFriends=['ZhangTianAi','LiuShiShi','SomeOne'];deletegirlFriends[1];console.log(girlFriends.length);//3console.log(girlFriends);//["ZhangTianAi",2:"SomeOne"]ps:delete命令在使用的時候,是根據(jù)數(shù)組下標(biāo)來對指定數(shù)組的值進行刪除的。3.數(shù)組的調(diào)用 數(shù)組的調(diào)用實際上指的是數(shù)組元素的調(diào)用。數(shù)組元素通過【數(shù)組名+下標(biāo)】的方式來進行訪問。

vargirlFriends=['張?zhí)鞇?,'李貞賢','SomeOne']; console.log('今天朕就選你侍寢吧,'+girlFriends[0]); console.log('張?zhí)鞇郏簮鬯滥懔嘶噬?)

ps:數(shù)組元素一次只能訪問一個,不能一次連續(xù)訪問多個數(shù)組元素。4.數(shù)組的方法javascript為數(shù)組提供了很多方法,方便開發(fā)者更好的使用數(shù)組。

(1)isArray:判斷是否為數(shù)組(2)valueOf:返回數(shù)組本身(3)toString:將數(shù)組以字符串的形式返回(4)push:向數(shù)組末尾追加數(shù)據(jù),返回當(dāng)前數(shù)組的長度(5)pop:刪除數(shù)組最后一個元素(6)join:將數(shù)組轉(zhuǎn)換為字符串,默認(rèn)按逗號隔開(7)shift():在數(shù)組頭部刪除一個元素(8)unshift():在數(shù)組頭部添加一個元素(9)reverse():數(shù)組反轉(zhuǎn)(10)slice:數(shù)組截取(11)splice:數(shù)組截取,并且可以插入新的元素(改變原數(shù)組)(12)sort:排序(13)indexOf:索引(14)lastIndexOf:反序索引(1)isArray方法

isArray方法是數(shù)組提供的用來專門判斷當(dāng)前對象是否為數(shù)組的方法。如果是數(shù)組返回true,否則返回false。vararr=[];Array.isArray(arr);//true

vararr=newArray();varresult=Array.isArray(arr);//true

vararr=[1,2,3];varresult=Array.isArray(arr);//true

varresult=Array.isArray("anarray");document.write(result);//false并不是一個數(shù)組,而是一個字符串(2)valueOf方法

valueOf方法歸屬于Object對象類型,作用是返回指定對象的原始值。在數(shù)組中作用是返回數(shù)組本身。(其他用法這里暫時不提) 語法:arr.valueOf() vararray=["FrankenStein",true,12,-5];

document.writen(array.valueOf()===array);//trueps:JavaScript的許多內(nèi)置對象都重寫了該函數(shù),以實現(xiàn)更適合自身的功能需要。因此,不同類型對象的valueOf()方法的返回值和返回值類型均可能不同。(3)toString方法

toString方法能夠把數(shù)組轉(zhuǎn)換成字符串。 語法:arr.toString()

vargirlFriends=['ZhangTianAi','LiuShiShi','SomeOne'];

console.log(girlFriends.toString());//ZhangTianAi,LiuShiShi,SomeOneps:toString方法不止能轉(zhuǎn)換數(shù)組,對于布爾值也能夠轉(zhuǎn)換。(4)push方法

push方法用于在數(shù)組的末端添加一個或多個元素,并返回添加后的數(shù)組的長度。 語法:arr.push(item)

vargirlFriends=['張?zhí)鞇?,'李貞賢','劉詩詩'];

console.log(girlFriends.push('someOne'));//4(5)pop方法

pop方法用于刪除數(shù)組的最后一個元素,并返回刪除的這個元素。 語法:arr.pop()

vargirlFriends=['張?zhí)鞇?,'李貞賢','劉詩詩'];

console.log(girlFriends.pop());//劉詩詩(6)join方法

join方法能夠以給定的參數(shù)做分隔符,將所有的數(shù)組元素組成一個字符串。如果不提供參數(shù),默認(rèn)使用逗號分隔。 語法:arr.join(separator)

vargirlFriends=['張?zhí)鞇?,'李貞賢','劉詩詩'];

console.log(girlFriends.join());//張?zhí)鞇劾钬戀t劉詩詩

console.log(girlFriends.join(','));//張?zhí)鞇郏钬戀t,劉詩詩(7)shift方法

shift方法用于刪除數(shù)組中的第一個元素,并返回刪除的這個元素。 語法:arr.shift()

vargirlFriends=['張?zhí)鞇?,'李貞賢','劉詩詩'];

console.log(girlFriends.shift());//張?zhí)鞇?console.log(girlFriends);//['李貞賢','劉詩詩'](8)unshift方法

unshift方法用于在數(shù)組的第一個位置添加元素,并返回添加元素后新數(shù)組的長度。 語法:arr.unshift(item)

vargirlFriends=['李貞賢','劉詩詩'];

console.log(girlFriends.unshift('張?zhí)鞇?));//3(9)reverse方法

reverse方法能夠反序排列數(shù)組。 語法:arr.reverse()

vargirlFriends=['張?zhí)鞇?,'李貞賢','劉詩詩'];

console.log(girlFriends.reverse());//['劉詩詩','李貞賢','張?zhí)鞇?](10)slice方法

slice方法作用是能夠根據(jù)指定的【起始點】和【結(jié)束點】來對數(shù)組進行截取,并生成一個新數(shù)組。新數(shù)組的內(nèi)容是從起始點下標(biāo)開始的元素到結(jié)束點下標(biāo)的元素,但是不包括結(jié)束點下標(biāo)的元素本身。

語法:arr.slice(index1,index2);

vargirlFriends=['張?zhí)鞇?,'李貞賢','劉詩詩'];

console.log(girlFriends.slice(1,2));//李貞賢上面代碼的作用是,從數(shù)組下標(biāo)1元素(李貞賢)開始截取,到數(shù)組下標(biāo)2元素(劉詩詩)為止。但是不包括劉詩詩。ps:slice方法的參數(shù)可以是負(fù)值。-1代表最后一個元素,-2代表倒數(shù)第二個元素。

vargirlFriends=['ZhangTianAi','LiuShiShi','SomeOne']; console.log(girlFriends.slice(-2,-1));//LiuShiShipss:如果只寫一個參數(shù),則表示從當(dāng)前坐標(biāo)開始截取一直到最后一個元素。(11)splice方法

splice方法和slice方法很相似,但是splice功能更強大一些。 splice方法的作用是在指定下標(biāo)處截取一定長度的元素,再插入一些新元素,并將刪除的元素構(gòu)成一個新數(shù)組返回。splice方法會改變原本數(shù)組。 語法:arr.splice(index,removeCount,addItem1,addItem2,…) varnumbers=[1,2,3,'a','b','c',7,8,9]; varnew1=numbers.splice(3,3,4,5,6); console.log(new1);//["a","b","c"] console.log(numbers);//[1,2,3,4,5,6,7,8,9] 上述代碼中numbers.splice(3,3,4,5,6);的含義是,從數(shù)組下標(biāo)為3的元素開始,刪除3個元素,然后把4,5,6插入到原數(shù)組當(dāng)中。ps:對于splice方法來說,有沒有新元素不是必要的。(12)sort方法

sort方法用于對數(shù)組元素進行排序。默認(rèn)按照編碼方式進行排序(即不在括號里寫任何內(nèi)容),如果不希望按照默認(rèn)方式排序,則需要自定義排序函數(shù)。 語法:arr.sort(sortby) vararr=[1,100,40,25,38]; console.log(arr.sort());//[1,100,25,38,40] 如果調(diào)用該方法時沒有使用參數(shù),將按字母順序?qū)?shù)組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現(xiàn)這一點,首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要),以便進行比較。 vararr=['Frank','arik','sophia']; console.log(arr.sort());//["Frank","arik","sophia"] 如果想按照其他標(biāo)準(zhǔn)進行排序,就需要提供比較函數(shù)functionsortNumber(a,b){returna-b>0}vararr=[100,4,25,33,18];document.write(arr+"<br/>")//[100,4,25,33,18]document.write(arr.sort(sortNumber))//[4,18,25,33,100](13)indexOf方法

indexOf方法能夠從前到后檢索數(shù)組,并返回元素在數(shù)組中的第一次出現(xiàn)的下標(biāo),如果沒有索引到則返回-1。indexOf第二個參數(shù)表示從第幾個元素開始索引,是可選參數(shù)。 語法:arr.indexOf(item,beginIndex)

varnumbers=[11,13,15,17,19,11];

console.log(numbers.indexOf(11));//0 console.log(numbers.indexOf(100));//-1ps:第二個參數(shù)可以是負(fù)值。如果是-1則表示從最后一個元素開始向后查找,這種寫法我個人不推薦。 varnumbers=[11,13,15,17,19,11]; console.log(numbers.indexOf(11,-1));//5 console.log(numbers.indexOf(19,-1));//-1表

溫馨提示

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

最新文檔

評論

0/150

提交評論