浅谈四种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个 |
3 | JavaScript手册 | 有剩余 | 单价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)
浅谈四种JS数组循环相关推荐
- 浅谈四种常见的agv导航方式及各自的优缺点
了解过AGV小车的朋友都知道,agv小车也叫作自动搬运车.搬运机器人等,agv小车主要是通过电磁.光学或其它自动导引装置,能够实现自主规划线路自动行驶的一个过程,是一种具有安全性高以及拥有各种搭载功能 ...
- php的循环有哪几种,PHP数组循环遍历的几种方式
PHP数组循环遍历 1.for循环 //语法 for (init counter; test counter; increment counter) { code to be executed; } ...
- [原]浅谈几种服务器端模型——反应堆模式(epoll 简介) - _Boz - 博客园
[原]浅谈几种服务器端模型--反应堆模式(epoll 简介) - _Boz - 博客园 [原]浅谈几种服务器端模型--反应堆模式(epoll 简介) 引言:上一篇说到了线程池方式来处理服务器端的并发, ...
- java的byte php_java_浅谈java的byte数组的不同写法,(由于篇幅原因阐述的不够详 - phpStudy...
浅谈java的byte数组的不同写法 (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"b ...
- php编码 js解码,浅谈php和js中json的编码和解码
php中 1)编码 $jsonstr = json_encode($array) 2)解码 $arr = json_decode($jsonstr) echo json_encode("中文 ...
- js 编码 php 解码,浅谈php和js中json的编码和解码
php中 1)编码 $jsonStr = json_encode($array) 2)解码 $arr = json_decode($jsonStr) echo json_encode("中文 ...
- 浅谈几种区块链网络攻击以及防御方案之其它网络攻击
旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/16/network_attack_of_blockchain_other_attack/ 写在前面的话 自比特 ...
- 浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击
旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/14/network_attack_of_blockchain_ddos_attack/ 写在前面的话 自比特币 ...
- 浅谈几种区块链网络攻击以及防御方案之女巫攻击
旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/13/network_attack_of_blockchain_sybil_attack/ 写在前面的话 自比特 ...
最新文章
- Exception in thread main java.lang.IncompatibleClassChangeError: net/sf/cglib/core/DebuggingClassW
- cmake编译时支持gdb调试
- Oracle数据库定时备份脚本
- python的for语句打印金字塔图形_python实现输入任意一个大写字母生成金字塔的示例...
- OpenXLSX 中文字段读取问题
- LeetCode 1971. Find if Path Exists in Graph(图的遍历)
- 第一次迭代 一次会议
- 金蝶BOS开发之--非空验证、时间、电话号码验证
- Sorting a Three-Valued Sequence
- CMU 15-213 Introduction to Computer Systems学习笔记(23) Thread-Level Parallelism
- 甘肃刘家峡赤壁“结”出多彩冰瀑
- 《旷野游荡的精灵》 一个会写诗的程序员 2019.3
- 浏览器刷新页面导致vuex数据丢失问题如何解决?
- 15b万用表怎么测电容_怎么判断启动电容好坏_启动电容怎么测量好坏_数字万用表测电容好坏...
- android 手指滑动顺时针逆时针判断
- Excel换行显示的几种方法,你知道吗?
- 树莓派外接显示器黑屏_解决树莓派连接显示屏No Signal的问题
- ads1278_ADS1278
- oracle 错误06512,处理ORA-06512错误
- html hr线条粗细,html中hr怎么设置粗细
热门文章
- 哔哩哔哩:JS 异步笔试题
- JDK8的HashMap扩容原理
- 从Rust到远方:WebAssembly 星系
- 追女生说话技巧,这些技巧让你牢牢锁住女生的心,总想找你聊
- php .asmx,php实现通过soap调用.Net的WebService asmx文件
- 300-700题红题第二题
- Android课程设计大作业-音乐播放器
- 电脑诊断出策略服务器未运行,win10系统使用诊断策略服务提示未运行的具体技巧...
- sql笔记1:sql执行优先级和casewhen用法、sql执行顺序
- pushd 命令,了解一下! 一个比 cd 更高效的目录切换命令