標籤:
ECMAScript5為數組定義了5個迭代方法:every(),filter(),forEach(),map(),some()
每個方法都接收兩個參數:要在每一項上啟動並執行函數 和 (可選的)運行該函數的範圍對象-影響this的值 .
傳入這些方法中的函數會接收三個參數:數組項的值,該項在數組中的位置和數組對象本身.
根據使用的方法不同,這個函數執行後的傳回值可能會也可能不會影響方法的傳回值.
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script> var numbers=[1,2,3,4,5,4,3,2,1]; //關於every(),每一項為true,才返回true var everyResult=numbers.every(function(item,index,array){//function傳入三個參數,數組項的值item,該項在數組中的位置index,數組對象本身array return (item>2); }); console.log(everyResult);//false //關於some(),有一項為true,就返回true var someResult=numbers.some(function(item,index,array){ return (item>2); }); console.log(someResult);//true //關於filter(),返回function函數裡每項為true組成的數組 var filterResult=numbers.filter(function(item,index,array){ return (item>2); }); console.log(filterResult);//[3,4,5,4,3] //關於map(),返回的是function調用後結果組成的數組 var mapResult1=numbers.map(function(item,index,array){ return item*2; }); console.log(mapResult1);//[2,4,6,8,10,8,6,4,2] var mapResult2=numbers.map(function(item,index,array){ return 1; }); console.log(mapResult2);//[1,1,1,1,1,1,1,1,1] //關於forEach(),它只是對數組中每一項運行傳入的函數,這個方法沒有傳回值,本質上與使用for迴圈迭代數組一樣 numbers.forEach(function(item,index,array){ //執行某些操作,例如 console.log(item);//輸出時是迴圈每一項輸出值換行輸出下一項值 }); </script></head><body> </body></html>
高程5.2.8迭代方法