簡單總結下JS中遇到的幾種遍歷方法

2021-08-29 07:29:36 字數 2761 閱讀 6026

下面是幾種遍歷的方法,另外我們常用來中斷迴圈的語句我在這裡簡單的提一下:

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包括在內,但arraylength屬性卻不包括在內。

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 用來遍歷陣列元素 第乙個引數為陣列元素,第二個引數為陣列元素索引,第三個引數為陣列本身 可選 沒有返回值...