說下js中常見的幾種循環

forEach: 類似for循環,無返回值

	   var arr = [1,2,3,4,5];
       arr.forEach((item,index,array) => {  
            console.log(index + '--' + item); //  0--1 1--2 2--3 ...
            console.log(array); // [1, 2, 3, 4, 5]
       })
       

map: 有return值,返回一個新數組,與原先數組有映射關係

		var arr = [1,2,3,4,5];
        var arr1 = arr.map((item,index,array) => {  
            return item *= 2
        })
        console.log(arr1); //[2, 4, 6, 8, 10]

some: 返回一個布爾值,判斷數組中是否有item滿足該條件

  		var arr = [1,2,3,4,5];
        var flag = arr.some((item,index,array) => {
            return item > 3 //條件判斷
        })
        console.log(flag); //true 

every:返回一個布爾值,判斷數組是否每一個item滿足該條件

	   var arr = [1,2,3,4,5];
       var flag = arr.every((item,index,array) => {
           return item > 3 //條件判斷
       })
       console.log(flag); //false

filter是一個過濾器,滿足條件的推入新數組

	   var arr = [1,2,3,4,5];
       var arr1 = arr.filter((item,index,array) => {
           return item > 3  //條件判斷
       })
       console.log(arr1); // [4, 5]

reduce具有收斂彙總性,最終返回prev(每一次循環結果作爲下次的prev)

	     //prev 第一個值       //next 當前值
 	     //index 當前值的索引  //array 傳入的數組
 	     /*   prev 第一個參數,可以預先傳入,next爲數組第一項,開始index=0 */
		 var arr = [1,2,3,4,5];
         var arr1 = arr.reduce((prev,next,index,array) => {
             return prev += next
         },0)
         console.log(arr1); // 15
         /*  prev可不傳,prev取數組第一項,next爲第二項,開始index=1  */
         var arr2 = arr.reduce((prev,next,index,array) => {
             return prev += next
         })
         console.log(arr2); //15

recuceRight 從右開始循環數組

	   var arr = [1,2,3,4,5];
       var arr3 = arr.reduceRight((prev,next,index,array) => {
           return prev.concat(next)  
       },[])
       console.log(arr3); // [5, 4, 3, 2, 1]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章