for ,foreach ,map 循環的區別


一、for循環

1、for - 循環代碼塊一定的次數

 遍歷數組最常用到的for循環,是最為熟知的一種方法

for (var i=0; i<5; i++)
  {
  x=x + "The number is " + i + "<br>";
  }

從上面的例子中,可以看到:

Statement 1 在循環開始之前設置變量 (var i=0)。

Statement 2 定義循環運行的條件(i 必須小於 5)。

Statement 3 在每次代碼塊已被執行后增加一個值 (i++)。

 

2、for/in - 循環遍歷對象的屬性

var person={fname:"John",lname:"Doe",age:25};

for (x in person)
  {
  txt=txt + person[x];
  }

3、while - 當指定的條件為 true 時循環指定的代碼塊

如果忘記增加條件中所用變量的值,該循環永遠不會結束

while (i<5)
  {
  x=x + "The number is " + i + "<br>";
  i++;
  }

4、do/while - 同樣當指定的條件為 true 時循環指定的代碼塊

do/while 循環是 while 循環的變體。該循環會執行一次代碼塊,在檢查條件是否為真之前,然后如果條件為真的話,就會重復這個循環。循環至少會執行一次,即使條件是 false,隱藏代碼塊會在條件被測試前執行

do
  {
  x=x + "The number is " + i + "<br>";
  i++;
  }
while (i<5);

二、foreach 用於調用數組的每個元素,並將元素傳遞給回調函數。注意: forEach() 對於空數組是不會執行回調函數的。

array.forEach(function(currentValue, index, arr), thisValue)
currentValue:必需。當前元素
index:可選。當前元素的索引值。
arr:可選。當前元素所屬的數組對象。
thisValue:可選。傳遞給函數的值一般用 "this" 值。
如果這個參數為空, "undefined" 會傳遞給 "this" 值

#for  和  foreach 的總結

三、map

.map(callback(index,domElement))

.map()要比.forEach()執行速度更快。雖然我也說過執行速度不是我們需要考慮的主要因素,但是他們都比for()要更好用,那肯定要選更優化的一個,但是map()方法不會對空數組進行檢測。

第二,.forEach()的返回值並不是array

var arr = [1, 2, 3]; console.log( arr.map(function(i){ return i+i; }) //鏈式風格 .sort() );// [2,4,6] console.log( arr.forEach(function(i){ return i+i; }) //接不起來,斷了 .sort() );//TypeError: Cannot read property 'sort' of undefined
  • map:和forEach非常相似,都是用來遍歷數組中的每一項值的,用來遍歷數組中的每一項;
  • 區別:map的回調函數中支持return返回值;return的是啥,相當於把數組中的這一項變為啥(並不影響原來的數組,只是相當於把原數組克隆一份,把克隆的這一份的數組中的對應項改變了);
  • 不管是forEach還是map 都支持第二個參數值,第二個參數的意思是把匿名回調函數中的this進行修改。

#map 和 foreach的總結

1、map速度比foreach快

2、map會返回一個新數組,不對原數組產生影響,foreach不會產生新數組,

3、map因為返回數組所以可以鏈式操作,foreach不能

 


免責聲明!

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



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