js中幾種遍歷

2021-10-24 02:47:21 字數 2556 閱讀 4615

抽空整理一下js中的遍歷,之前一直只用其中的for迴圈、filter、foreach等少數幾種;這次把整個遍歷給梳理一遍;另外我們常用來中斷迴圈的語句:

a、continue: 中斷本次迴圈;

b、return和break直接跳出迴圈。

1. 普通的for迴圈

let arr = [1, 2, 3];

for (let i = 0; i < arr.length; i++) { // 這裡的i是代表陣列的下標

console.log(i); //0,1,2

最簡單的一種,正常用的話也不會出現什麼問題,想中斷也可以中斷,效能上也還可以。

2. for...of...遍歷(這種遍歷支援es6)

let arr = [1, 2, 3]

for (let item of arr) {

// item代表陣列裡面的元素

console.log(item); //1,2,3

1、 這是最簡潔、最直接的遍歷陣列元素的語法

2、 這個方法避開了for-in迴圈的所有缺陷

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

4、效能要好於forin,但仍然比不上普通for迴圈

3. foreach()

let arr = [1, 2, 3];

arr.foreach((item, index, arr) => {

// item為arr的元素,index為下標,arr原陣列

console.log(item);

console.log(index);

console.log(arr);

這種遍歷便捷還是挺便捷的,看起來優雅,對目標陣列的操作很人性化,要元素給元素,要下標給下標,但是當某種情況你想中斷遍歷的時候,你就會感覺它就像雞肋,食之無味,棄之可惜。由於foreach是array型自帶的,對於一些非這種型別的,無法直接使用(如nodelist),所以才有了這個變種,使用這個變種可以讓類似的陣列擁有foreach功能。而且foreach的效能也會比普通的for迴圈弱。又下面的例子我們可以看到,我們常用的return false是可以終止**繼續往下執行的,但是在foreach遍歷中,並沒有終止迴圈,所以在用foreach的時候,要考慮使用場景了。

4. some()

let arr = [1, 2, 3];

arr.some((item, index, arr) => {

// item為陣列中的元素,index為下標,arr為目標陣列

return item === 2; // true

some作為乙個用來檢測陣列是否滿足一些條件的函式存在,同樣是可以用作遍歷的函式簽名同foreach,有區別的是當任一callback返回值匹配為true則會直接返回true,如果所有的callback匹配均為false,則返回false。

some() 方法會依次執行陣列的每個元素:

5. every()

let arr = [1, 2, 3];

arr.every((item, index, arr) => {

// item為陣列中的元素,index為下標,arr為目標陣列

return item > 0; // true

return index == 0; // false

every() 方法用於檢測陣列所有元素是否都符合指定條件(通過函式提供)。

every() 方法使用指定函式檢測陣列中的所有元素:

6. for...in...遍歷

let arr = [1, 2, 3];

for (let item in arr) {

// item遍歷陣列時為陣列的下標,遍歷物件時為物件的key值

console.log(item); //0,1,2

for...in更多是用來遍歷物件,很少用來遍歷陣列, 不過 item 對應與陣列的 key值,建議不要用該方法來遍歷陣列,因為它的效率是最低的。

7. filter()

let arr = [1, 2, 3];

arr.filter((item) => {

// item為陣列當前的元素

return item > 1; // [2, 3]

filter() 方法建立乙個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。

8. map()

let arr = [1, 2, 3];

arr.map((item) => {

console.log(item);

return item * 2;

map() 方法返回乙個新陣列,陣列中的元素為原始陣列元素呼叫函式處理後的值。

map() 方法按照原始陣列元素順序依次處理元素。

這種方式也是用的比較廣泛的,雖然用起來比較優雅,但實際效率還比不上foreach

上述簡單的介紹了各種遍歷的方法。

JS的幾種遍歷方法

原生 foreach遍歷陣列,執行內部方法 用法 foreach item,index filter 遍歷陣列然後根據內部方法判斷是否存在於新陣列中 用法 陣列a.filter item some 遍歷陣列,並執行內部函式,一項為true則停止遍歷返回true,所有都false則返回false ev...

JS陣列遍歷的幾種方式

1 for 2 for.in.var arr 1,2,3,4 for var key in arr 會跳過稀疏散組 3 for.of for var val of arr 4 foreach arr.foreach function item,index,arr 沒有返回值,函式裡依次對應為 陣列元...

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

下面是幾種遍歷的方法,另外我們常用來中斷迴圈的語句我在這裡簡單的提一下 a continue 中斷本次迴圈 b return和break直接跳出迴圈。var arr 1,2,3 for var i 0,len arr.length i len i 使用臨時變數,將長度快取起來,避免重複獲取陣列長度,...