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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

varageArr=[18,24,30]; console.log(ageArr.length);//3length是一個(gè)可寫屬性。 如果設(shè)置length長(zhǎng)度小于數(shù)組本身長(zhǎng)度,那么多余元素舍棄。 如果設(shè)置length長(zhǎng)度大于數(shù)組本身長(zhǎng)度,那么缺少元素用空位補(bǔ)齊。 如果設(shè)置length長(zhǎng)度不是合法數(shù)值,那么會(huì)報(bào)錯(cuò)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ù)訪問(wèn)數(shù)組中的每個(gè)元素,可以使用forin快速遍歷。

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

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

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

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

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

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

vargirlFriends=['張?zhí)鞇?ài)','李貞賢','SomeOne']; console.log('今天朕就選你侍寢吧,'+girlFriends[0]); console.log('張?zhí)鞇?ài):愛(ài)死你了皇上')

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

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

isArray方法是數(shù)組提供的用來(lái)專門判斷當(dāng)前對(duì)象是否為數(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并不是一個(gè)數(shù)組,而是一個(gè)字符串(2)valueOf方法

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

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

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

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

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

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

vargirlFriends=['張?zhí)鞇?ài)','李貞賢','劉詩(shī)詩(shī)'];

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

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

vargirlFriends=['張?zhí)鞇?ài)','李貞賢','劉詩(shī)詩(shī)'];

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

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

vargirlFriends=['張?zhí)鞇?ài)','李貞賢','劉詩(shī)詩(shī)'];

console.log(girlFriends.join());//張?zhí)鞇?ài)李貞賢劉詩(shī)詩(shī)

console.log(girlFriends.join(','));//張?zhí)鞇?ài),李貞賢,劉詩(shī)詩(shī)(7)shift方法

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

vargirlFriends=['張?zhí)鞇?ài)','李貞賢','劉詩(shī)詩(shī)'];

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

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

vargirlFriends=['李貞賢','劉詩(shī)詩(shī)'];

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

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

vargirlFriends=['張?zhí)鞇?ài)','李貞賢','劉詩(shī)詩(shī)'];

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

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

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

vargirlFriends=['張?zhí)鞇?ài)','李貞賢','劉詩(shī)詩(shī)'];

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

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

splice方法和slice方法很相似,但是splice功能更強(qiáng)大一些。 splice方法的作用是在指定下標(biāo)處截取一定長(zhǎng)度的元素,再插入一些新元素,并將刪除的元素構(gòu)成一個(gè)新數(shù)組返回。splice方法會(huì)改變?cè)緮?shù)組。 語(yǔ)法: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個(gè)元素,然后把4,5,6插入到原數(shù)組當(dāng)中。ps:對(duì)于splice方法來(lái)說(shuō),有沒(méi)有新元素不是必要的。(12)sort方法

sort方法用于對(duì)數(shù)組元素進(jìn)行排序。默認(rèn)按照編碼方式進(jìn)行排序(即不在括號(hào)里寫任何內(nèi)容),如果不希望按照默認(rèn)方式排序,則需要自定義排序函數(shù)。 語(yǔ)法:arr.sort(sortby) vararr=[1,100,40,25,38]; console.log(arr.sort());//[1,100,25,38,40] 如果調(diào)用該方法時(shí)沒(méi)有使用參數(shù),將按字母順序?qū)?shù)組中的元素進(jìn)行排序,說(shuō)得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。要實(shí)現(xiàn)這一點(diǎn),首先應(yīng)把數(shù)組的元素都轉(zhuǎn)換成字符串(如有必要),以便進(jìn)行比較。 vararr=['Frank','arik','sophia']; console.log(arr.sort());//["Frank","arik","sophia"] 如果想按照其他標(biāo)準(zhǔn)進(jì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),如果沒(méi)有索引到則返回-1。indexOf第二個(gè)參數(shù)表示從第幾個(gè)元素開始索引,是可選參數(shù)。 語(yǔ)法:arr.indexOf(item,beginIndex)

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論