说下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]
发布了8 篇原创文章 · 获赞 1 · 访问量 280

猜你喜欢

转载自blog.csdn.net/weixin_42442445/article/details/96116771