map、foreach和for循環區別


一 、foreach和for循環區別

1.在固定長度或者長度不需要計算的時候for循環效率高於foreach,在不確定長度或者計算長度有損性能的時候用foreach比較方便

2.foreach適用於只是進行集合或數組遍歷,for則在較復雜的循環中效率更高。

3.如果對集合中的值進行修改,就要用for循環了。其實foreach的內部原理其實也是Iterator,但它不能像Iterator一樣可以人為的控制,而且也不能調用iterator.remove();更不能使用下標來訪問每個元素,所以不能用於增加,刪除等復雜的操作。

4.forEach相比普通的for循環的優勢在於對稀疏數組的處理,會跳過數組中的空位。

 

二、數組中的forEach和map的區別

 

大多數情況下,我們都要對數組進行遍歷,然后經常用到的兩個方法就是forEach和map方法。
先來說說它們的共同點

相同點

  • 都是循環遍歷數組中的每一項
  • forEach和map方法里每次執行匿名函數都支持3個參數,參數分別是item(當前每一項),index(索引值),arr(原數組)
  • 匿名函數中的this都是指向window
  • 只能遍歷數組
  • 都不會改變原數組

區別

map方法
1.map方法返回一個新的數組,數組中的元素為原始數組調用函數處理后的值。
2.map方法不會對空數組進行檢測,map方法不會改變原始數組。
3.瀏覽器支持:chrome、Safari1.5+、opera都支持,IE9+,

array.map(function(item,index,arr){},thisValue) var arr = [0,2,4,6,8]; var str = arr.map(function(item,index,arr){ console.log(this); //window console.log("原數組arr:",arr); //注意這里執行5次 return item/2; },this); console.log(str);//[0,1,2,3,4]

若arr為空數組,則map方法返回的也是一個空數組。
forEach方法
1.forEach方法用來調用數組的每個元素,將元素傳給回調函數
2.forEach對於空數組是不會調用回調函數的。

Array.forEach(function(item,index,arr){},this) var arr = [0,2,4,6,8]; var sum = 0; var str = arr.forEach(function(item,index,arr){ sum += item; console.log("sum的值為:",sum); //0 2 6 12 20 console.log(this); //window },this) console.log(sum);//20 console.log(str); //undefined

無論arr是不是空數組,forEach返回的都是undefined。這個方法只是將數組中的每一項作為callback的參數執行一次。

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM