1.forEach迭代器
forEach方法接收一個函數作為參數,對數組中每個元素使用這個函數,只調用這個函數,數組本身沒有任何變化
//forEach迭代器function square(num){ document.write(num + ' ' + num*num + '<br>');}var nums = [1,2,3,4,5,6,7,8];nums.forEach(square);
在瀏覽器中輸出的結果是:
2.every迭代器
every方法接受一個返回值為布爾類型的函數,對數組中的每個元素使用這個函數,如果對于所有的元素,該函數均返回true,則該方法返回true,否則返回false
//every迭代器function isEven(num){ return num % 2 == 0;}var nums = [2,4,6,8];document.write(nums.every(isEven));
3.some迭代器
some方法也是接受一個返回值為布爾類型的函數,只要有一個元素使得該函數返回true,該方法就返回true
//some迭代器function isEven(num){ return num % 2 == 0;}var nums = [1,3,5,7];document.write(nums.some(isEven));
4.reduce迭代器
reduce方法接受一個函數,返回一個值,該方法從一個累加值開始,不斷對累加值和數組中的后續元素調用該函數,知道數組中最后一個元素,最后得到返回的累加值
//reduce迭代器function add(runningTotal, currentValue){ return runningTotal + currentValue;}var nums = [1,2,3,4,5,6,7,8,9,10];var sum = nums.reduce(add);document.write(sum);
得到的結果是:55
reduce()
函數和add()
函數一起,從左到右,一次對數組中的元素求和,執行過程如下:
add(1,2) -> 3add(3,3) -> 6add(6,4) -> 10add(10,5) -> 15add(15,6) -> 21add(21,7) -> 28add(28,8) -> 36add(36,9) -> 45add(45,10) -> 55
reduce
方法也可以用來將數組中的元素鏈接成一個長的字符串,代碼如下
//使用reduce連接數組元素function concat(accumulatedString, item){ return accumulatedString + item;}var words = ['the ', 'quick ', 'brown ', 'fox'];var sentence = words.reduce(concat);document.write(sentence);
最后輸出結果如下:
javascript還提供了reduceRight
方法,和Reduce
方法不同,它是從右到左執行,如下:
//使用reduce連接數組元素function concat(accumulatedString, item){ return accumulatedString + item;}var words = ['the ', 'quick ', 'brown ', 'fox '];var sentence = words.reduceRight(concat);document.write(sentence);
執行結果如下:
5.map迭代器
map迭代器和forEach有些類似,但是map會改變數組,生成新的數組,如下代碼
//使用map迭代器生成新的數組function curve(grade){ return grade+5;}var grades = [77,65,81,92,83];var newgrades = grades.map(curve);document.write(newgrades);
輸出結果:
6.fiter迭代器
和every迭代器類似,傳入一個返回值為布爾類型的函數,和every
方法不同的是,當數組中所有元素對應該函數返回的結果均為true時,該方法并不返回true,而是返回一個新的數組,該數組包含對應函數返回結果為true的元素,代碼如下
function isEven(num){ return num % 2 == 0;}function isOdd(num){ return num % 2 != 0;}var nums = [];for (var i=0; i<20; i++) { nums[i] = i+1;}var evens = nums.filter(isEven);document.write(evens);document.write('<br>');var odds = nums.filter(isOdd);document.write(odds);
輸出結果如下:
總結
以上就是關于javascript中的六種迭代器的總結,希望本文的內容對大家學習工作能有所幫助。
新聞熱點
疑難解答