第七十九篇:数组方法(forEach,some,every,reduce)
好家伙,来复习几个数组方法,
1.forEach循环与some循环
代码如下:
<script>
const arr =['奔驰','宝马','GTR','奥迪'] //forEach循环一旦开始,无法在中间被停止
arr.forEach((item,index)=>{
console.log(item)
console.log(index)
if(item ==='GTR'){
console.log('找到GTR了')
console.log(item)
console.log(index)
return
}
})
console.log('以下是some循环')
arr.some((item,index)=>{
if(item==='GTR'){
console.log('找到GTR了')
console.log(item)
console.log(index)
//在找到对应项之后,可以通过return true固定语法,来终止some循环
return true
}
})
</script>
两者区别:
forEach循环一旦开始,无法在中间被停止,而
some循环在找到对应项之后,可以通过return true固定语法,来终止some循环
2.every循环
假设现在要做一个类似于淘宝购物车的物品全选按钮,
要判断是否全选.
那么我们就需要用到every循环了,
上代码:
<script>
const arr = [
{id:1,name:'奔驰',state:true},
{id:2,name:'宝马',state:true},
{id:3,name:'GTR',state:true}
]
//来判断数组中的各项是否被全选了
const result = arr.every(item=>item.state==true)
console.log(result)
</script>
state全true,则result为true,
state只要有一个flase,则result为flase
3.reduce方法
现在又来假设需求了,
我们要把我们在购物车中勾选的商品的总价计算一下
来吧,
上代码;
<script>
const arr = [
{id:1,name:'奔驰',state:true,price:10,count:1},
{id:2,name:'宝马',state:false,price:100,count:2},
{id:3,name:'GTR',state:true,price:1000,count:3}
]
//需求:计算已勾选商品的总价
let sum = 0;
arr.filter(item=>item.state).forEach(item=>{
sum += item.price + item.count
}) console.log(sum) </script>
在这里我们也可以使用reduce方法
<script>
const arr = [
{id:1,name:'奔驰',state:true,price:10,count:1},
{id:2,name:'宝马',state:false,price:100,count:2},
{id:3,name:'GTR',state:true,price:1000,count:3}
]
//需求:计算已勾选商品的总价 console.log('以下是reduce方法')
//arr.filter(item=>item.state).reduce((累加的结果,当前循环项)=>{},初始值)
const result =arr.filter(item=>item.state).reduce((amt,item)=>{ return amt += item.price*item.count },0) console.log(result)
</script>
解释一下:
reduce第一次循环中,将0作为自己的初始值
随后将价格与数量的乘积返回amt中,
再将最后的总值赋值给result
来看看效果:
4.补充reduce的简写
const result =arr.filter(item=>item.state).reduce((amt,item)=>{ return amt += item.price*item.count },0)
简写为一行
const result =arr.filter(item=>item.state).reduce((amt,item)=>amt += item.price*item.count ,0)
reduce会循环前面的arr,将0作为累加器amt的初始值
随后每次循环的结果都加到amt中,reduce跑完以后将amt的值返回
That's all
第七十九篇:数组方法(forEach,some,every,reduce)的更多相关文章
- Python之路【第十九篇】:爬虫
Python之路[第十九篇]:爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...
- 第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装
第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装 xadmin介绍 xadmin是基于Django的admin开发的更完善的后台管理系统,页面基于Bootstr ...
- Egret入门学习日记 --- 第十九篇(书中 8.8~8.10 节 内容)
第十九篇(书中 8.8~8.10 节 内容) 开始 8.8节. 重点: 1.类型推断. 2.类型强制转换,使其拥有代码提示功能. 3.除了TS自带的类型判断,Egret官方也提供了类型判断的方法. 操 ...
- “全栈2019”Java第七十九章:类中可以嵌套接口吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- ES6新增的常用数组方法(forEach,map,filter,every,some)
ES6新增的常用数组方法 let arr = [1, 2, 3, 2, 1]; 一 forEach => 遍历数组 arr.forEach((v, i) => { console.log( ...
- Android UI开发第三十九篇——Tab界面实现汇总及比较
Tab布局是iOS的经典布局,Android应用中也有大量应用,前面也写过Android中TAb的实现,<Android UI开发第十八篇——ActivityGroup实现tab功能>.这 ...
- (七十九)c#Winform自定义控件-导航菜单
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- java提高篇(十九)-----数组之二
前面一节主要介绍了数组的基本概念,对什么是数组稍微深入了一点点,在这篇博文中主要介绍数组的其他方面. 三.性能?请优先考虑数组 在java中有很多方式来存储一系列数据,而且在操作上面比数组方便的多?但 ...
- salesforce零基础学习(七十九)简单排序浅谈 篇一
我们在程序中经常需要对数据列表进行排序,有时候使用SOQL的order by 不一定能完全符合需求,需要对数据进行排序,排序可以有多种方式,不同的方式针对不同的场景.篇一只是简单的描述一下选择排序,插 ...
随机推荐
- 什么是AR技术?AR的价值究竟有多大?
什么是AR技术? AR技术,解释来说就是增强现实(Augmented Reality),是一种实时地计算摄影机影像的位置及角度并加上相应图像.3D模型的技术,它的目标是把虚拟世界嵌套进真实世界进行互动 ...
- VR技术的应用领域有哪些?
5G时代已经到来,新技术的商用不仅能够为用户带来更快的网络连接速度,那些依靠网速的提升,而得以更快发展的科技企业,也迎来了新的发展契机. 这其中,尤为值得关注的是VR领域. 谈起VR,这并不算一个陌生 ...
- HMS Core新闻行业解决方案:让技术加上人文的温度
开发者们,你希望用户如何获取新闻? 有的人靠手机弹窗知天下事,有的人则在新闻应用中尽览每一篇文章:有的人一目十行,有的人则喜欢细细咀嚼:有的人主动探索,有的人则想要应用投其所好. 科技在不断刷新着用户 ...
- Win 系统下使用gnvm操作node版本
下载 gnvm官方网址 有好几种安装方式,我这里使用的是百度网盘下载. 安装 下载完成将gnvm.exe文件放到node的安装根目录下,如果你不知道安装目录在哪?可以使用命令: where node ...
- Spring Data JPA系列4——Spring声明式数事务处理与多数据源支持
大家好,又见面了. 到这里呢,已经是本SpringData JPA系列文档的第四篇了,先来回顾下前面三篇: 在第1篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring ...
- VisionPro · C# · 加载与保存取像工具
VisionPro 项目程序设计,取像工具可被包含在工具包内被调用,一般,为了满足程序取像可以实现单次取像,循环取像,实时取像等多方面应用,会将取像工具独立打包. 加载代码: 1 using Syst ...
- Java数组的基本操作
public class Array1 { public static void main(String[] args) { int [] num={1,2,3,4,5}; System.out.pr ...
- wsl2安装百度apollo及其基本配置
一. wsl2的开启 首先 WSL2 gui 需要Windows 11 Build 22000版本以上才支持 利用管理员权限打开PowerShell 执行 dism.exe /online /enab ...
- PTA(BasicLevel)-1018 锤子剪刀布
一.问题定义 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如下: 剪刀 > 布, 锤子 > 剪刀, 布 > 锤子 现给出两人的交 ...
- Java实现动态代理
1.实现InvocationHandler接口 这种方式只能针对接口实现类的实例对象. interface Hello{ public void sayHello(); } class HelloIm ...