JS 陣列和物件的遍歷方式,以及幾種方式的比較。

2022-08-28 22:00:19 字數 1149 閱讀 5241

通常我們會用迴圈的方式來遍歷陣列。但是迴圈是 導致js 效能問題的原因之一。一般我們會採用下幾種方式來進行陣列的遍歷:

方式1:

for in迴圈:

var arr = [1,2,3,4,5];

var obj = ;

for( var item in arr|obj );

這裡的 item:

方式2:

for 迴圈:

for (var i=0; i//do sth with arr[i];

這兩種方法應該非常常見且使用很頻繁。但實際上,這兩種方法都存在效能問題。

在方式一中,for-in 需要分析出array 的每個屬性,這個操作效能開銷很大。用在 key 已知的陣列上是非常不划算的。所以盡量不要用 for-in,除非你不清楚要處理哪些屬性,例如 json 物件這樣的情況。

在方式2中,迴圈每進行一次,就要檢查一下陣列長度。讀取屬性(陣列長度)要比讀區域性變數慢,尤其是當 array 裡存放的都是 dom 元素,因為每次讀取都會掃瞄一遍頁面上的選擇器相關元素,速度會大大降低。

所以這時候我們就有必要對方式2進行優化。

加速的 :

var arr = [1,2,3,4,5];

var length =arr.length;

for(var i=0; ifn(arr[i]);

現在只需要讀取一次 array 的 length 屬性,速度已經加快了。但是還能不能更快呢?

事實是,如果迴圈終止條件不進行比較運算,那麼迴圈的速度還可以更快。

加速且優雅的:

var arr = [1,2,3,4,5];

var i = arr.length;

while(i--){

fn(arr[i]);

方式 3:

foreach:

var arr = [1,2,3,4,5];

arr.foreach(

fn(value,index){

//do sth with value ;

注意:關於跳出迴圈的幾種方式:

js陣列遍歷和物件遍歷

1.普通for迴圈var arr 1,2,3,4,5,6 for var i 0 i length i 2.優化版for迴圈 使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯for var j 0 len arr.length j j 3.foreach,es5推出的,陣列自帶的迴...

js陣列遍歷和物件遍歷

針對js各種遍歷作乙個總結分析,從型別用處 分陣列遍歷和物件遍歷 還有效能,優缺點等。1,普通for迴圈,經常用的陣列遍歷 var arr 1,2,0,3,9 for var i 0 i 2,優化版for迴圈 使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯 for var j 0...

js陣列遍歷和物件遍歷

針對js各種遍歷作乙個總結分析,從型別用處 分陣列遍歷和物件遍歷 還有效能,優缺點等。js陣列遍歷 1,普通for迴圈,經常用的陣列遍歷 var arr 1,2,0,3,9 for var i 0 i 2,優化版for迴圈 使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯 for ...