迭代器(循坏)与reduce的使用

一、迭代器

注意点:

所有的迭代方法都有以下几个特点
1. 不能使用 break 以及 continue 关键字来中断遍历迭代
2. 所有的遍历都是静态遍历,在遍历最开始的时候就已经确定了要遍历多少次,这个次数只小于或等于原来的数组长度

1、forEach

数组自带的foreach循环,使用频率较高,实际上性能比普通for循环弱。对数组的每个元素执行一次提供的函数,不能使用break、return。

参数:

item     代表当前遍历的这一项

index    代表当前遍历的这一项的索引

_arr     代表当前正在遍历的数组

let num = arr.forEach((item, index, _arr)=>{
    console.log(item + "-------------"+index);
})
console.log(num);   //undefined

2、 map。在node.js环境中会返回一个布尔值

它也是一个迭代方法,它与forEach非常相似,唯一的不同点就可以将每一次迭代的回调函数的返

回值接收下来,然后组成一个新的数组,返回出去。实际效率还比不上foreach

 var arr = [4, 7, 8, 5, 9, 3];  
let num2 = arr.map((item, index, _arr)=>{
        console.log(item + "-------------"+index);
        return item
    })
    console.log(num2);  // [4, 7, 8, 5, 9, 3]

3、 filter

该方法与map方法非常相似,它会在原数组里面返回符合指定条件的元素,然后将这些元素组成

数组返回到外边

var arr = [4, 7, 8, 5, 9, 3];
let num3 = arr.filter((item, index, _arr)=>{
    console.log(item + "-------------"+index);
    return item%2==0
})
console.log(num3);   // [4,8]

4、every

对数组中的每个元素都执行一次指定的函数(callback),回调函数返回一个条件,它根据这个条件来决定返回 ,每个都满足返回true否则返回false

 var arr = [4, 7, 8, 5, 9, 3]; 
let num4 = arr.every((item, index, _arr)=>{
        // console.log(item + "-------------" + index);
        return item == 3
    })
    console.log(num4);  false

5、some

该方法参照 every 方法,只要有一个满足就返回true否则返回false

    var arr = [4, 7, 8, 5, 9, 3]; 
 let num5 = arr.some((item, index, _arr)=>{
        // console.log(item + "-------------" + index);
        return item ==3
    })
    console.log(num5);  // true

二、reduce的使用

和迭代方法(map、fliter、forEach,every,some)一样,会遍历数组;reduce()方法会遍历数组中的每一个元素,每遍历一次就会执行一次回调函数。当遍历完之后会将最后的结果返回出去。

2、reduce( )方法有两个参数,

第一个参数是累加函数有第四个参数分别是:prevcurrentindex_arr,后两个参数为可选参数,

参数:

  • prev 代表前一个的回调函数的返回值【这一次回调函数的返回值会作为下一次回调函数当中的prev使用】
  • current 代表当前遍历的这一次的值【 reduce 是从数组的第二项元素开始的】
  • index 代表当前遍历的索引
  • _arr 代表当前正在操作的这个数组

第二个是函数的prev的初始值(可自定)。

语法:arr.reduce(callback,[prev])

举例:

let result = arr.reduce(function (prev,current,index,_arr){
        document.write(prev,'-------',current,'-------',index,"<br>")
},6)

结果:

prev:默认是数组的第一个数,但这里设置了6,

所以打印 6--------4--------0

1、 数组累加

var arr = [1,2,3,4]    
let result = arr.reduce(function (prev,current,index,_arr){
        document.write(prev,'-------',current,'-------',index,"<br>")
        var sum = prev+current
        return sum
    })
    document.write(result)

结果:

1-------2-------1
3-------3-------2
6-------4-------3
10

2、数组求最大元素 

 var arr = [1,2,3,4] 
let result = arr.reduce(function (prev,current,index,_arr){
        document.write(prev,'-------',current,'-------',index,"<br>")
        var sum = prev>current?prev:current
        return sum
    })
    document.write(result)

结果:

1-------2-------1
2-------3-------2
3-------4-------3
4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值