一、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 (xin
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不能