從es5到es6中的循環事件他們的優缺點以及底層算法是怎么實現的

第一種for循環:

?for(var? i =?0;?i < arr.length;?i++) { }

第二種方法for....in:

var arr = newArray("first", "second", "third")

?for(var item in arr) {

document.write(arr[item]+",");

}

一般都是用它來循環key是id這樣的數組,一般不推薦遍歷數組,因為for in遍歷后的不能保證順序,而且原型鏈上的屬性也會被遍歷到,因此一般常用來遍歷非數組的對象并且使用hasOwnProperty()方法去過濾掉原型鏈上的屬性..

第三種方法 forEach

arr.forEach(e => {

?e.answer = e.answer.replace(/<\/?[^>]*>/g, "");

});


瀏覽器的支持的情況,ie9以及ie9以上的瀏覽器會支持;

forEach的參數有兩個,一個是回調函數,一個是把匿名回調函數中的this進行修改,他的函數部分包括三個值1.當前元素,2.當前元素的索引值,3.當前元素所屬的數組對象。

forEach用來遍歷數組中的每一項,這個方法沒有返回值,他的返回值是undefined,對原來的數組也沒有影響。

forEach無法在所有元素都傳遞給調用的函數之前終止(而for循環卻有break方法),如果要提前終止,必須把forEach放在try塊中,并能拋出一個異常。如果forEach()調用的函數拋出foreach.break異常,循環會提前終止

forEach方法中的this是ary,匿名回調函數中的this默認是window;

forEach會改變原來的數組


var arr = newArray(1000);

arr[0] =1;

arr[99] =3;

arr[999] =5;

varcount =0;

arr.forEach(function(value, index){

?count++;console.log(typeofindex);

console.log(index, value);});

console.log('count', count);

// number

// 0 1

// number

// 99 3

// number

// 999 5

// count 3

ie6-8下的兼容性寫法


第四種map:

arr.map(function(n){});

map()方法返回的是原數組被“映射”成對應新數組,還是按原數組內的數據一次返回,

map不會對空數組進行檢驗

map不會改變原始數組


return出來的是按原來的數組的順序出來的新數組,map不會改變原來的數組

arr.map(function(currentValue , index , arr),thisValue)

map也是支持兩個參數第一個是回調函數,第二個是是把匿名回調函數中的this進行修改。

ie6-8下的兼容性的寫法


第五種for of循環

寫法:for( var value of myArray ){ console.log(value);};

(1)for of是最簡潔的,最直接的遍歷數組元素的語法

(2)這個方法避開了for in循環的所有的缺陷

(3)與forEach不同的是,它可以正確的響應break、continue和return語句

for of循環不僅能遍歷數組還可以遍歷其他的集合

for-of循環不僅支持數組,還支持大多數類數組對象,例如DOMNodeList對象

for-of循環也支持字符串遍歷,它將字符串視為一系列的Unicode字符來進行遍歷:

for(var chr of ""){alert( chr );}

它同樣支持Map和Set對象遍歷。(下一篇會詳細的講解es6新增的類型map和set)

第五種 while

while循環15 * - 語法:16 * while(條件表達式){17 * 語句...18 * }19 * 20 * - while語句在執行時,21 * 先對條件表達式進行求值判斷,22 * 如果值為true,則執行循環體,23 * 循環體執行完畢以后,繼續對表達式進行判斷24 * 如果為true,則繼續執行循環體,以此類推25 * 如果值為false,則終止循環

第六種 do while?

- 語法:29 * do{30 * 語句...31 * }while(條件表達式)32 * 33 * - 執行流程:34 * do...while語句在執行時,會先執行循環體,35 * 循環體執行完畢以后,在對while后的條件表達式進行判斷,36 * 如果結果為true,則繼續執行循環體,執行完畢繼續判斷以此類推37 * 如果結果為false,則終止循環38 * 39 * 實際上這兩個語句功能類似,不同的是while是先判斷后執行,40 * 而do...while會先執行后判斷,41 * do...while可以保證循環體至少執行一次,42 * 而while不能

第七種 somef循環, 返回一個Boolean,判斷是否有元素符合func條件

第八種? every,返回一個Boolean,判斷每個元素是否符合func條件

第九種? ?filter() 方法創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。沒有到沒有符合條件時返回空數組。返回一個符合func條件的元素數組

循環控制語句

1、break:跳出本層循環,繼續執行循環后面的語句。

如果循環有多層,則break只能跳出一層。

2、continue:跳過本次循環剩余的代碼,繼續執行下一次循環。

①對與for循環,continue之后執行的語句,是循環變量更新語句i++;

②對于while、do-while循環,continue之后執行的語句,是循環條件判斷;

因此,使用這兩個循環時,必須將continue放到i++之后使用,否則,continue將跳過i++進入死循環。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容