js中常用到的12中迴圈遍歷的方法

2021-09-09 05:33:14 字數 4048 閱讀 999

1、for 迴圈

let arr = [1,2,3];

for(let i=0; iconsole.log(i,arr[i])

}

// 0 1

// 1 2

// 2 3

for 迴圈是 js 中最常用的乙個迴圈工具,經常用於陣列的迴圈遍歷。

2、for in 迴圈(vue中常用到)

let obj =

for(let iinobj)

// name zhou

// age **

for in 迴圈主要用於遍歷普通物件,i 代表物件的 key 值,obj[i] 代表對應的 value,當用它來遍歷陣列時候,多數情況下也能達到同樣的效果,但是你不要這麼做,這是有風險的,因為 i 輸出為字串形式,而不是陣列需要的數字下標,這意味著在某些情況下,會發生字串運算,導致資料錯誤,比如:'52'+1 = '521' 而不是我們需要的 53。

另外 for in 迴圈的時候,不僅遍歷自身的屬性,還會找到 prototype 上去,所以最好在迴圈體內加乙個判斷,就用 obj[i].hasownproperty(i),這樣就避免遍歷出太多不需要的屬性。

3、while 迴圈

同樣的遍歷 cars 陣列,先用 for 迴圈方法

let cars=["bmw","volvo","saab","ford"];

let i=0;

for(;cars[i];)

;

// bmw

// volvo

// saab

// ford

然後是 while 迴圈方法

cars=["bmw","volvo","saab","ford"];

vari=0;

while(cars[i])

;

我們發現,它們可以實現同樣的效果,事實上它們底層的處理是一樣的,不過 for 迴圈可以把定義、條件判斷、自增自減操作放到乙個條件裡執行,**看起來方便一些,僅此而已。 

4、do while 迴圈

let i = 3;

do

while(i>0)

// 3

// 2

// 1

do while 迴圈是 while 迴圈的乙個變體,它首先執行一次操作,然後才進行條件判斷,是 true 的話再繼續執行操作,是 false 的話迴圈結束。

5、陣列foreach 迴圈(vue中常用到)

let arr = [1,2,3];

arr.foreach(function(i,index))

// 1 0

// 2 1

// 3 2

foreach迴圈,迴圈陣列中每乙個元素並採取操作, 沒有返回值, 可以不用知道陣列長度,他有三個引數,只有第乙個是必需的,代表當前下標下的 value。

另外請注意,foreach 迴圈在所有元素呼叫完畢之前是不能停止的,它沒有 break 語句,如果你必須要停止,可以嘗試 try catch 語句,就是在要強制退出的時候,丟擲乙個 error 給 catch 捕捉到,然後在 catch 裡面 return,這樣就能中止迴圈了,如果你經常用這個方法,最好自定義乙個這樣的 foreach 函式在你的庫里。

6、陣列 map()方法 (vue中常用到)

arr.map(function(i,[index],[arr]))

// [2,4,6]

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

注意:map 和 foreach 方法都是只能用來遍歷陣列,不能用來遍歷普通物件。

7、陣列 filter() 方法(vue中常用到)

arr.filter(function(i,[index],[arr]))

// [2,3]

filter 方法是 array 物件內建方法,它會返回通過過濾的元素,不改變原來的陣列。

8、array some() 方法 (vue中也用到)

let arr = [1,2,3];

let tt = arr.some(function(i))

// true

some() 方法用於檢測陣列中的元素(只要有乙個滿足條件就是true)是否滿足指定條件(函式提供),返回 boolean 值,不改變原陣列。

9、陣列 every() 方法(vue中用到)

arr.every(function(i,[index],[arr]))

// 檢測陣列中元素是否都大於1

// false

every() 方法用於檢測陣列所有元素(或每乙個元素都必須滿足條件才為true)是否都符合指定條件(通過函式提供),返回 boolean 值,不改變原陣列。

10、array reduce()方法(vue常用到)

let arr = [1,2,3];

let ad = arr.reduce(function(i,j))

// 6

reduce() 方法接收乙個函式作為累加器,陣列中的每個值(從左到右)開始縮減,最終計算為乙個值。

11、array reduceright()方法

let arr = [1,2,3];

let ad = arr.reduceright(function(i,j))

// 6

reduceright()方法,和 reduce() 功能是一樣的,它是從陣列的末尾處向前開始計算。

12、for of 迴圈

let arr = ['name','age'];

for(let i of arr)

// name

// age

for of 迴圈是 es6 中新增的語句,功能非常強大用來替代 for in 和 foreach,for-of迴圈不僅支援陣列,還支援大多數類陣列物件,它允許你遍歷 arrays(陣列), strings(字串), maps(對映), sets(集合)等可迭代(iterable data)的資料結構,注意它的相容性。

// 類陣列物件

letobj =總結

以上就是我總結的 js 中常見的迴圈遍歷方法,隨著 es6 標準的相容性越來越好,我發現很多實現方案慢慢都不再必要了,比如 let、const 取代var 後,在某些情況下的閉包函式也就不存在了。   

js中常見的迴圈遍歷

1.for迴圈,可以break結束迴圈。arr 1 2,3 4,5 6 for let i 0 i arr.length i 2.for.in迴圈,用於物件迴圈遍歷,可獲取物件的對應鍵值 注意 for in迴圈物件的所有列舉屬性,需再使用hasownproperty 方法來忽略繼承屬性,即在迴圈內部...

js常用的迴圈遍歷方法

for in 迴圈 for of 迴圈 遍歷所有資料結構的統一的方法 for in 迴圈主要用於遍歷普通物件,i 代表物件的 key 值,obj i 代表對應的 value 但是遍歷陣列時候,要注意,因為 i 輸出為字串形式,而不是陣列需要的數字下標,這意味著在某些情況下,會發生字串運算,導致資料錯...

AS3中常用到的公式

基本三角函式的計算 角的正弦值 對邊 斜邊 角的余弦值 鄰邊 斜邊 角的正切值 對邊 鄰邊 角度制與弧度制的相互轉換 弧度 角度 math.pi 180 角度 弧度 180 math.pi 計算兩點間距離 dx x2 x1 dy y2 y1 dist math.sqrt dx dx dy dy 緩動...