浅谈四种JS数组循环

目录

一.forEach循环

二.some循环 

 三.every循环

 四.reduce循环


一.forEach循环

他不能够终止循环----所以forEach的性能比较差

意思是就算查找到了我们需要的数组元素,forEach也不会停下来的,直到把这个数组所有数组循环一遍才能终止本次循环:

eg:

const arr = [1,3,5,7,8,10,12,14,16]
arr.forEach((item,index)=> {
    console.log('循环了几次?');
    if(item === 8){
        console.log('到这里我已经查询到了我想要查询的数组元素')
    }
})

我们发现就算forEach找到了当前期望数组元素,循环还是会继续进行下去

那么我们可不可以手动停下来呢?

const arr = [1,3,5,7,8,10,12,14,16]
arr.forEach((item,index)=> {
    console.log('循环了几次?');
    if(item === 8){
        console.log('到这里我已经查询到了我想要查询的数组元素')
        return
    }
})

并没有作用


二.some循环 

some不同于forEach循环的是:some可以在找到对应项之后通过return true这个固定语法来终止掉some循环:

const arr = [1,3,5,7,8,10,12,14,16]
arr.some((item,index)=> {
    console.log('循环了几次?');
    if(item === 8){
        console.log('到这里我已经查询到了我想要查询的数组元素')
        return true
    }
})


 三.every循环

主要用于循环判断

const arr = [
    {id:1,status:true},
    {id:2,status:true},
    {id:3,status:true},
    {id:4,status:false},
    {id:5,status:true}
]
const res = arr.every((item => item.status))
console.log(res)


const restwo = arr.every(function(item){
    return item.status == true
})
console.log(restwo)

const arr = [
    {id:1,status:true},
    {id:2,status:true},
    {id:3,status:true},
    {id:4,status:true},
    {id:5,status:true}
]
const res = arr.every((item => item.status))
console.log(res)


const restwo = arr.every(function(item){
    return item.status == true
})
console.log(restwo)


 四.reduce循环

reduce循环主要用于循环累加

语法:数组.reduce(累加的结果,当前循环项)=>{return 计算过程},初始值)

假如我们有这样一个要求:

张三开的小卖铺马上就要关门了,还有剩下了一些东西没有卖出去,需要统计一下

如下:

1铅笔盒有剩余单价2000元剩余个数100个
2钢笔没有剩余单价1元剩余0个
3JavaScript手册有剩余单价80元剩余2本

 我们需要怎么做?

没错--首先定义一个数组:

const arr = [
    {id:1,name:"铅笔盒",status:true,price:2000,count:100},
    {id:2,name:"钢笔",status:false,price:1,count:0},
    {id:3,name:"javascrip手册",status:true,price:80,count:2}
]

接下来就该我们的reduce循环上场了:

const arr = [
    {id:1,name:"铅笔盒",status:true,price:2000,count:100},
    {id:2,name:"钢笔",status:false,price:1,count:0},
    {id:3,name:"javascrip手册",status:true,price:80,count:2}
]
//思路:我们先排除卖完的,然后把还有剩余的商品进行计算累加
const results =  arr.filter(item => item.status).reduce((res,item)=> {
    return res += item.price * item.count
},0)
console.log(results)

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Try Tomato

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值