下面是幾種遍歷的方法,另外我們常用來中斷迴圈的語句我在這裡簡單的提一下:
a、continue: 中斷本次迴圈;
b、return和break直接跳出迴圈。
var arr = [1, 2, 3]
for(var i = 0, len = arr.length; i < len; i++) ;
使用臨時變數,將長度快取起來,避免重複獲取陣列長度,當陣列較大時優化效果才會比較明顯。這種方法基本上是所有迴圈遍歷方法中效能最高的一種,並且這一型別的for迴圈可以通過用break來中斷迴圈,如下圖所示:
1、 這是最簡潔、最直接的遍歷陣列元素的語法
2、 這個方法避開了for-in迴圈的所有缺陷
3、 與foreach()不同的是,它可以正確響應break、continue和return語句
4、效能要好於forin,但仍然比不上普通for迴圈
5、for of 還可以用來遍歷iterable型別中的 set 。map資料
var arr = [1, 2, 3];
arr.foreach((item, index, arr) => );
這種遍歷便捷還是挺便捷的,看起來優雅,對目標陣列的操作很人性化,要元素給元素,要下標給下標,但是當某種情況你想中斷遍歷的時候,你就會感覺它就像雞肋,食之無味,棄之可惜。由於foreach是array型自帶的,對於一些非這種型別的,無法直接使用(如nodelist),所以才有了這個變種,使用這個變種可以讓類似的陣列擁有foreach功能。而且foreach的效能也會比普通的for迴圈弱。又下面的例子我們可以看到,我們常用的return false是可以終止**繼續往下執行的,但是在foreach遍歷中,並沒有終止迴圈,所以在用foreach的時候,要考慮使用場景了。
主要用於遍歷普通物件。不推薦用來遍歷陣列
for ... in
迴圈由於歷史遺留問題,它遍歷的實際上是物件的屬性名稱(key)。乙個array
陣列實際上也是乙個物件,它的每個元素的索引被視為乙個屬性。
當我們手動給array
物件新增了額外的屬性後,for ... in
迴圈將帶來意想不到的意外效果:
var a = ['a', 'b', 'c'];
a.name = 'hello';
for (var x in a)
for ... in
迴圈將把name
包括在內,但array
的length
屬性卻不包括在內。
var arr = [1, 2, 3];
arr.some((item, index, arr) => )
some作為乙個用來檢測陣列是否滿足一些條件的函式存在,同樣是可以用作遍歷的函式簽名同foreach,有區別的是當任一callback返回值匹配為true則會直接返回true,如果所有的callback匹配均為false,則返回false。
some() 方法會依次執行陣列的每個元素:
every() 方法用於檢測陣列所有元素是否都符合指定條件(通過函式提供)。
every() 方法使用指定函式檢測陣列中的所有元素:
filter() 方法建立乙個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。
var arr = [1, 2, 3];
arr.map(item => )
map() 方法返回乙個新陣列,陣列中的元素為原始陣列元素呼叫函式處理後的值。
map() 方法按照原始陣列元素順序依次處理元素。
這種方式也是用的比較廣泛的,雖然用起來比較優雅,但實際效率還比不上foreach
js中幾種遍歷
抽空整理一下js中的遍歷,之前一直只用其中的for迴圈 filter foreach等少數幾種 這次把整個遍歷給梳理一遍 另外我們常用來中斷迴圈的語句 a continue 中斷本次迴圈 b return和break直接跳出迴圈。1.普通的for迴圈 let arr 1,2,3 for let i ...
黑馬程式設計師 簡單總結下C 中的幾種語句
asp.net unity開發 net培訓 期待與您交流!c 語言中的語句大致分為3大類,即標號語句 宣告語句和嵌入語句。其中,嵌入語句包括以下幾種。語句塊 語句塊由位於 和 中的多條語句組成。語句塊可以巢狀,即語句塊中還可以包含語句塊。空語句 使用分號 表示,不執行任何操作 表示式語句。條件選擇語...
總結js中的迴圈遍歷
定義乙個陣列和物件 const arr a b c d e f const obj 經常用來遍歷陣列元素 遍歷值為陣列元素索引for let i 0 len arr.length,i len i 用來遍歷陣列元素 第乙個引數為陣列元素,第二個引數為陣列元素索引,第三個引數為陣列本身 可選 沒有返回值...