《HTML教程》-8.8-8.9教學(xué)材料_第1頁(yè)
《HTML教程》-8.8-8.9教學(xué)材料_第2頁(yè)
《HTML教程》-8.8-8.9教學(xué)材料_第3頁(yè)
《HTML教程》-8.8-8.9教學(xué)材料_第4頁(yè)
《HTML教程》-8.8-8.9教學(xué)材料_第5頁(yè)
已閱讀5頁(yè),還剩29頁(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)介

1、Map的創(chuàng)建與初始化Map創(chuàng)建十分容易,使用new關(guān)鍵字創(chuàng)建即可,而且可以在創(chuàng)建時(shí)初始化?!魐armap=newMap(); //聲明一個(gè)Map對(duì)象◆letmap=newMap([[1,'one'],[2,'two'],[3,'three']]); //聲明并初化一個(gè)Map◆letmap=newMap().set(1,'one').set(2,'two').set(3,'three');其中l(wèi)et用于聲明一個(gè)變量,最后一種方式是對(duì)象的鏈?zhǔn)秸{(diào)用。后面兩種方式都是在聲明Map時(shí)將其初始化。2、Map的操作

Map通過(guò)get(key)方法獲取指定的key對(duì)應(yīng)的值,通過(guò)set(key,value)設(shè)置“鍵-值”對(duì),通過(guò)delete(key)刪除key對(duì)應(yīng)的條目,通過(guò)clear()方法清空Map。map.get(1);//返回onemap.delete(2);//刪除map中鍵為2的條目3、Map的遍歷遍歷Map有好多種方法,即可以遍歷它的key的集合,也可以遍歷value的集合,還可以遍歷條目entries的集合,下面分別予以說(shuō)明。(1)遍歷Map鍵(key)的集合通過(guò)Map的keys()方法返回Map所有鍵的集合,然后通過(guò)for…of循環(huán)遍歷每個(gè)鍵。for(letkeyofmap.keys()){console.log(key);}這種方式也可以通過(guò)get()方法獲取key對(duì)應(yīng)的value,也可用于間接訪問(wèn)Map的value的集合。(2)遍歷Map值的集合通過(guò)Map的values()方法返回Map所有值的集合,然后通過(guò)for…of循環(huán)遍歷每個(gè)值。for(letvalueofmap.values()){console.log(value);}(3)遍歷Map的條目通過(guò)Map的entries()方法獲取Map條目的集合,然后通過(guò)for…of循環(huán)遍歷每個(gè)條目,其中entry[0]表示key,entry[1]表示value。for(letentryofmap.entries()){console.log(entry[0],entry[1]);}還可以通過(guò)以下方式同時(shí)訪問(wèn)條目的key-value對(duì):for(let[key,value]ofmap.entries()){console.log(key,value);}這種用法比較陌生,請(qǐng)大家認(rèn)真多寫幾遍,力求掌握。下面通過(guò)一個(gè)例子來(lái)說(shuō)明Map的用法,代碼如清單8-11所示。在清單8-11中,首先通過(guò)new關(guān)鍵字聲明并初始化map1,這里需要注意的是初始化參數(shù),它首先是一個(gè)數(shù)組[],數(shù)據(jù)的元素也是一個(gè)結(jié)構(gòu)為[key,value]的數(shù)組,即[ [1,"Monday"], [2,"Tuesday"], [3,"Wendesday"], [4,"Thursday"], [5,"Friday"], [6,"Saturday"], [7,"Sunday"]]類似于一個(gè)7×2的二維數(shù)組,而不一個(gè)簡(jiǎn)單的一維數(shù)組,這一點(diǎn)要特別注意。對(duì)于map2的聲明和初始化則采用了new關(guān)鍵字和鏈?zhǔn)秸{(diào)用的方式。這里需要注意的是,在分行寫的情況下,Map()后沒有任何符號(hào),它的符號(hào)在下一行,為“.”運(yùn)算符,而每個(gè)set()后也是僅跟一個(gè)“.”運(yùn)算符,最后是一個(gè)分號(hào)表示該聲明語(yǔ)句結(jié)束。格式如下:varmap2=newMap() .set('2015',{animal:'馬',leep:"平年"}) .set("2016",{animal:'猴',leep:'閏年'}) .set("2017",{animal:'雞',leep:'平年'});這種格式的寫法要特別注意,不要每寫一行“順便”以分號(hào)結(jié)束,就會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤!這一點(diǎn)要特別注意。通過(guò)for…of循環(huán)遍歷map2的條目entries的方法輸出map2的值十分簡(jiǎn)單,代碼如下:for(let[key,value]ofmap2.entries()){ console.log(key,value); }很遺憾,雖然簡(jiǎn)單,但輸入的結(jié)果不能令人滿意:2015Object{animal:"馬",leep:"平年"}2016Object{animal:"猴",leep:"閏年"}2017Object{animal:"雞",leep:"平年"}它直接輸出了Map條目中鍵的內(nèi)容,而且還加入了使人不知所云的“Object”,不是我們要想的輸出結(jié)果。解決方法:根據(jù)每個(gè)條目的key,得到對(duì)應(yīng)的值,這個(gè)值是一個(gè)對(duì)象,然后遍歷這個(gè)對(duì)象,按照要求構(gòu)造輸出內(nèi)容。這里采用了遍歷Map鍵的集合的辦法:for(letkeyofmap2.keys()){ varobj=map2.get(key); varstr=key+"年是"; for(letpinobj){ switch(p){ case'animal':str+=obj[p]+"年";break; case'leep':str+="為"+obj[p];break; } } console.log(str);}首先,通過(guò)for…of遍歷map2的鍵的集合,即遍歷map2.keys()。每遍歷到一個(gè)key,就通過(guò)get()方法取出對(duì)應(yīng)的值,它是一個(gè)對(duì)象。然后通過(guò)for…in循環(huán)遍歷這個(gè)對(duì)象的所有屬性,并輸出屬性的值。。為了得到“XXXX年是X年為平/閏年”輸出格式,對(duì)值對(duì)象的屬性分別進(jìn)行了處理,當(dāng)屬性為animal時(shí),以str+=obj[p]+"年"拼接屬性值;當(dāng)屬性為leep時(shí),以str+="為"+obj[p]拼接屬性值,最后得到的輸出結(jié)果為:2015年是馬年為平年2016年是猴年為閏年2017年是雞年為平年這樣的結(jié)果就比較容易接受。最后,還要注意一點(diǎn)是,這個(gè)例子在網(wǎng)頁(yè)中看不到任何結(jié)果,結(jié)果顯示在瀏覽器的控制臺(tái)(見4.8節(jié))中。清單8-11完整的源代碼見隨書源碼的Listing8-12.html。最后還要注意的是,這些新增的對(duì)象,并不是所有的瀏覽器都支持的,有的瀏覽器在執(zhí)行這些程序時(shí)可能會(huì)報(bào)告錯(cuò)誤或異常,這是正?,F(xiàn)象。這里的源程序全部在Chrome瀏覽器49.0.2623.110m版本中測(cè)試通過(guò)。這個(gè)版本的Chrome可以說(shuō)是“較低”的版本了,已經(jīng)不再受支持了^_^。言外之意就是,只要是現(xiàn)行的Chrome瀏覽器都可以正常運(yùn)行本書的示例源程序。8.8.2SetSet是一個(gè)集合,可以存放任意類型的數(shù)據(jù),與數(shù)學(xué)中的概念類似,不能包含相同的元素。通過(guò)構(gòu)造函數(shù)創(chuàng)建Set對(duì)象;通過(guò)add()方法向集合中存放數(shù)據(jù);通過(guò)has()方法判斷是否包含指定的元素,delete()方法刪除指定的元素。Set有一個(gè)size屬性,指明集合中元素的個(gè)數(shù)。Set的用法1、聲明和初始化letset=newSet();//聲明一個(gè)空的Setletset=newSet(['red','green','blue']);//聲明并初始化一個(gè)3元素的Set2、常用操作

(1)遍歷Setfor(varxofset){console.log(x);}(2)擴(kuò)展Set(Set轉(zhuǎn)換成數(shù)組)

letset=newSet(['red','green','blue']);letarr=[...set];console.log(arr);//輸出結(jié)果:['red','green','blue']其中,…是擴(kuò)展操作符,對(duì)集合做擴(kuò)展運(yùn)算得到一個(gè)對(duì)應(yīng)的數(shù)組。(3)數(shù)組轉(zhuǎn)換成Set

letarr=[3,5,2,2,5,5];letunique=[...newSet(arr)];//結(jié)果Set:3,5,2(即不包含重復(fù)的元素)把數(shù)組作為Set的參數(shù)創(chuàng)建Set對(duì)象,并對(duì)該對(duì)象做擴(kuò)展運(yùn)算,得到一個(gè)對(duì)應(yīng)的Set。(4)映射和過(guò)濾letset=newSet([1,2,3]);set=newSet([...set].map(x=>x*2));Set對(duì)象沒有map()和filter()方法,需要把Set轉(zhuǎn)換成數(shù)組,再調(diào)用映射方法,映射操作的結(jié)果是:2,4,6。同樣的,過(guò)濾操作也要先把Set轉(zhuǎn)換成數(shù)組,再調(diào)用filter方法:letset=newSet([1,2,3,4,5]);set=newSet([...set].filter(x=>(x%2)==0));過(guò)濾結(jié)果為:2,4。Map和Set的區(qū)別Map和Set還有對(duì)應(yīng)的WeakMap和WeakSet,它們都有相同的接口,但有許多不同的地方:◆WeakMap不可遍歷,也不能調(diào)用clear()方法清空它;◆WeakSet不可遍歷,循環(huán)和清空。其實(shí),JavaScript還有許多其他對(duì)象,由于篇幅所限,不再一一講述,需要時(shí)候查一下相關(guān)書箱或者JavaScript手冊(cè)即可。8.9總結(jié)通過(guò)本章的學(xué)習(xí)你需要掌握以下內(nèi)容:◆Window對(duì)象的常用操作:獲取窗口本身的信息(大小、位置等);窗口操作(打開、關(guān)閉、縮放)。

◆掌握window對(duì)象提供的兩個(gè)定時(shí)函數(shù)的使用。

◆掌握Location、History、Date和String對(duì)象的用法。

◆掌握RegExp正則表達(dá)式對(duì)象的用法,并熟

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論