視頻播放地址:http://www.gxlcms.com/course/500.html
本視頻難點是數(shù)組循環(huán),對邏輯能力有所考察。下面總結(jié)下各種循環(huán)實例:
我們?nèi)绾伪闅v數(shù)組中的元素?20年前JavaScript剛萌生時,你可能這樣實現(xiàn)數(shù)組遍歷:
var arr=["one","two","three"];2 for(var i=0;i<arr.length;i++){3 document.write(arr[i]);4 }
自ES5正式發(fā)布后,你可以使用內(nèi)建的forEach方法來遍歷數(shù)組:
myArray.forEach(function (value) { console.log(value);});實際上forEach有三個參數(shù) 分別為 值 下標(biāo) 數(shù)組本身 于是我們有[].forEach(function(value, index, array) { // ...}); 對比jQuery中的$.each方法: $.each([], function(index, value, array) { // ...});
會發(fā)現(xiàn),第1個和第2個參數(shù)正好是相反的,大家要注意了,不要記錯了。后面類似的方法,例如$.map也是如此。
$.each(Array, function(i, value) { Array //數(shù)組 this; //this指向當(dāng)前元素 i; //i表示Array當(dāng)前下標(biāo) value; //value表示Array當(dāng)前元素}); var arr = [ "one", "two", "three", "four"]; $.each(arr, function(){ alert(this); }); //上面這個each
例如:
arr.forEach(function(i,j,v){ document.write("<br />數(shù)組的值"+i+ "<br />數(shù)組的下標(biāo)"+j+","+ "<br />數(shù)組本身"+v+"---") })
這段代碼看起來更加簡潔,但這種方法也有一個小缺陷:
forEach不夠靈活
arr.forEach不好用 你不能使用break語句中斷循環(huán),也不能使用return語句返回到外層函數(shù)。
當(dāng)然,如果只用for循環(huán)的語法來遍歷數(shù)組元素也很不錯。
那么,你一定想嘗試一下for-in循環(huán):
for (var index in myArray) { // 千萬別這樣做 console.log(myArray[index]); }
在這段代碼中,賦給index的值不是實際的數(shù)字,而是字符串“0”、“1”、“2”,此時很可能在無意之間進行字符串算數(shù)計算,例如:“2” + 1 == “21”,這給編碼過程帶來極大的不便。
簡而言之,
for-in是為普通對象設(shè)計的,你可以遍歷得到字符串類型的鍵,因此不適用于數(shù)組遍歷。
for...in 不適合用來遍歷數(shù)組
for…in會遍歷到自定義屬性甚至原型屬性、index是字符串而不是數(shù)值、某些情況下甚至不按順序遍歷
強大的for-of循環(huán)
ES6不會破壞你已經(jīng)寫好的JS代碼。目前看來,成千上萬的Web網(wǎng)站依賴for-in循環(huán),其中一些網(wǎng)站甚至將其用于數(shù)組遍歷。如果想通過修正for-in循環(huán)增加數(shù)組遍歷支持會讓這一切變得更加混亂,因此,標(biāo)準(zhǔn)委員會在ES6中增加了一種新的循環(huán)語法來解決目前的問題。
我們需要一種更方便的遍歷數(shù)組的方法,就像用 for...in 遍歷對象一樣簡單易用的方法,那就是 for...of
就像這樣:
for (var value of myArray) { console.log(value); }
是的,與之前的內(nèi)建方法相比,這種循環(huán)方式看起來是否有些眼熟?那好,我們將要探究一下for-of循環(huán)的外表下隱藏著哪些強大的功能。現(xiàn)在,只需記住:
這是最簡潔、最直接的遍歷數(shù)組元素的語法
這個方法避開了for-in循環(huán)的所有缺陷
與forEach()不同的是,它可以正確響應(yīng)break、continue和return語句
for-in循環(huán)用來遍歷對象屬性。
for-of循環(huán)用來遍歷數(shù)據(jù)—例如數(shù)組中的值。
但是,不僅如此!
for-of循環(huán)也可以遍歷其它的集合
for-of循環(huán)不僅支持?jǐn)?shù)組,還支持大多數(shù)類數(shù)組對象,例如DOM NodeList對象。
for-of循環(huán)也支持字符串遍歷,它將字符串視為一系列的Unicode字符來進行遍歷:
for (var value of myArray) { console.log(value); }
它同樣支持Map和Set對象遍歷。
$.map(array,function)
語法分析:對數(shù)組array中的每個元素,調(diào)用function函數(shù)進行處理,然后將結(jié)果返回,得到一個新的數(shù)組。
實例講解:將數(shù)組中的每一個元素*2,返回一個新的數(shù)組。代碼如下
<html> <head> <script type="text/javascript" src="jquery-1.8.2.min.js"></script> <script type="text/javascript"> var arr = [2,3,6]; var arr2 = $.map(arr,function(item){return item*2;}); for(var i=0,len=arr2.length;i<len;i++){ document.write(arr2[i]+"<br />");//
補充說明:item代表著每一個元素,這是形參,可用其它代替。
本視頻主講老師深入淺出,條理清楚,層層剖析,環(huán)環(huán)相扣,論證嚴(yán)密,結(jié)構(gòu)嚴(yán)謹(jǐn),用思維的邏輯力量吸引學(xué)生的注意力,用理智控制課堂教學(xué)進程。教學(xué)的技巧,充滿著機智,各種教學(xué)方法、技巧信手拈來,運用自如,恰到好處,并絲毫不帶有雕琢的痕跡。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com