for循環
- 使用示例
let array = ['item1','item2'];
let len = array.length;
for(let i=0;i<len;i++){
console.log(array[i],i) //1 ,2,3,4
}
适用場景
:非常靈活的一種方式,可以不必要周遊整個數組,可以根具需求随意跳出循環,但寫法較為繁瑣。
foreach
- 描述
forEach() 方法按升序為數組中含有效值的每一項執行一次 callback 函數,那些已删除或者未初始化的項将被跳過(例如在稀疏數組上)。
可依次向 callback 函數傳入三個參數:
數組目前項的值
數組目前項的索引
數組對象本身
- 使用示例
let array = ['item1','item2'];
array.foreach((item,index,originalArray)=>{
console.log(item) //'item1','item2'
})
适用場景
:常用的一種寫法,友善使用,除了抛出異常,沒有辦法打斷周遊
map
- 描述
map 方法會給原數組中的每個元素都按順序調用一次 callback 函數。callback 每次執行後的傳回值(包括 undefined)組合起來形成一個新數組。 callback 函數隻會在有值的索引上被調用;那些從來沒被賦過值或者使用 delete 删除的索引則不會被調用。
因為map生成一個新數組,當你不打算使用傳回的新數組卻使用map是違背設計初衷的,請用forEach或者for-of替代。你不該使用map: A)你不打算使用傳回的新數組,或/且 B) 你沒有從回調函數中傳回值。
callback 函數會被自動傳入三個參數:數組元素,元素索引,原數組本身。
- 使用示例
let array = ['item1','item2'];
array.map((item,index,originalArray)=>{
console.log(item) //'item1','item2'
})
适用場景
:傳回一個新的數組
reduce
- 描述
reduce為數組中的每一個元素依次執行callback函數,不包括數組中被删除或從未被指派的元素,接受四個參數:
accumulator 累計器
currentValue 目前值
currentIndex 目前索引
array 數組
- 使用示例
var sum = [0, 1, 2, 3].reduce(function (accumulator, currentValue) {
return accumulator + currentValue;
}, 0);
//sum 6
适用場景
:reduce 相當于給函數開辟了一個臨時的變量 我們将需要暫存的資料存儲 傳到下一個循環。有這樣需求的場景下使用較友善。
reduceRight的周遊順序為從右向左
{.is-warning}
every
- 描述
every 方法為數組中的每個元素執行一次 callback 函數,直到它找到一個會使 callback 傳回 falsy 的元素。如果發現了一個這樣的元素,every 方法将會立即傳回 false。否則,callback 為每一個元素傳回 true,every 就會傳回 true。callback 隻會為那些已經被指派的索引調用。不會為那些被删除或從未被指派的索引調用。
callback 在被調用時可傳入三個參數:元素值,元素的索引,原數組
- 使用示例
[12, 5, 8, 130, 44].every(x => x >= 10); // false
[12, 54, 18, 130, 44].every(x => x >= 10); // true
适用場景
:當需要周遊數組 來判斷是否每個元素都滿足條件的時候非常友善
some
- 描述
類似于every。every是所有都true才傳回true,some是隻要一個true就傳回true。