第一種方法:不產(chǎn)生任何新數(shù)組,相反,他們要么對(duì)于數(shù)組中的每個(gè)元素進(jìn)行某種操作,要么返回一個(gè)值。
1. forEach()方法,該方法接收一個(gè)函數(shù)作為參數(shù),對(duì)數(shù)組中的每個(gè)元素使用該函數(shù)。
<script> function arr(num){console.log(num+1)}; var array = [1,2,3,4,5,6]; array.forEach(arr); </script>
2.every()和some(),這兩個(gè)方法都是接受一個(gè)返回值為布爾類(lèi)型的函數(shù),對(duì)數(shù)組中的每一個(gè)元素使用該函數(shù)。every()方法是對(duì)于所有元素,該函數(shù)都返回true,該方法就返回true。而some()方法時(shí)只要有一個(gè)元素使用該函數(shù)返回true,該方法就返回true。
<script> var arr = [1,3,4,5,6,7,8]; function even(num){return num%2 ==0}; var sum = arr.every(even); var nums = arr.some(even); console.log(sum)//false; console.log(nums)//true;
</script>
3.reduce()方法接受一個(gè)函數(shù),返回一個(gè)值。該方法會(huì)從一個(gè)累加值開(kāi)始,不斷對(duì)累加值和數(shù)組中的后續(xù)元素調(diào)用該函數(shù),直到數(shù)組中的最后一個(gè)元素,最后返回得到的累加值。還可以把字符串?dāng)?shù)組元素連接成一個(gè)長(zhǎng)字符串
function add(total,num){return total+-*/num}; var arr =[1,2,3,4]; var sum = arr.reduce(add);
js還提供了reduceRight()方法,不同的是他和reduce()方法順序剛好相反,從右往左。
第二種方法 生成新數(shù)組的迭代器方法
有兩個(gè)迭代器方法可以產(chǎn)生新數(shù)組:map()和filter()。map()和forEach()有點(diǎn)像,對(duì)數(shù)組中的每個(gè)元素使用某個(gè)函數(shù),兩者區(qū)別在于map()返回一個(gè)新數(shù)組,該數(shù)組是對(duì)原有元素應(yīng)用某個(gè)函數(shù)得到的結(jié)果。
function add(num) { return num+=5; } var words =[1,2,3,4,5]; var sum =words.map(add); console.log(sum);//[6,7,8,9,10]
filter() 和every()類(lèi)似,傳入一個(gè)返回值為布爾類(lèi)型的函數(shù),和every()不同的是,當(dāng)對(duì)數(shù)組中的所有元素應(yīng)用該函數(shù),結(jié)果均為true時(shí),該方法并不返回true,而是返回一個(gè)新數(shù)組,該數(shù)組包含應(yīng)用該函數(shù)后結(jié)果為true的元素。
function add(num) { return num%2 == 0; } var words =[1,2,3,4,5]; var sum =words.filter(add); console.log(sum);//[2,4];
filter()還可以用于過(guò)濾字符串?dāng)?shù)組。例如:
function add(str){if(str).indexOf("cie")>-1){return true;}return false;} var words =["recieve","deceit","deceive"] var miss = words.filter(add); console.log(miss)//["recieve"]
以上內(nèi)容就是關(guān)于js 迭代器方法,希望能幫助到大家。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com