第七十九篇:数组方法(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 不一定能完全符合需求,需要对数据进行排序,排序可以有多种方式,不同的方式针对不同的场景.篇一只是简单的描述一下选择排序,插 ...
随机推荐
- dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能
我对几个应用进行严格的启动性能评估,对比了在 .NET Framework 和 dotnet 6 下的应用启动性能,非常符合预期的可以看到,在用户的设备上,经过了 NGen 之后的 .NET Fram ...
- 关于个人全栈项目【臻美IT】博客类出现的问题以及解决方法
每做一个项目,要记得写下心得哦,别偷懒啊!先上网址:https://www.maomin.club/ 这个项目属于博客类的,因为百度审核的问题就大体做了下,就当来练练手,里面文章链接的是CSDN的博客 ...
- Kingbase重新数据初始化,设置大小写
KingbaseV8数据库安装完成后,删除/opt/Kingbase/ES/V8/data下所有内容,重新在其他目录初始化数据库,设置为忽略大小写 [kingbase@dbserver bin]$ . ...
- SimpleMongoDbFactory类已经失效,被SimpleMongoClientDbFactory替代
老版本的mongodbtemplate连接池的用法 spring: data: mongodb: address: 127.0.0.1:37017 replica-set: database: xxx ...
- xxljob安装
目录 一.简介 二.docker安装 三.k8s方式安装 四.参考 一.简介 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家 ...
- DBUS接口和三极管反向电路
三极管反向电路,DR16的接收机接收的信号是反向的 电路描述:VEE为低电平时NPN三极管Q1截止,A点为高电平:VEE为高电平时NPN三极管Q1导通,A点为低电平:从而实现了电平反向.阻R1作用是在 ...
- 用VS Code搞Qt6:编译源代码与基本配置
先说明一下,本水文老周仅讨论新版的 Qt 6,旧版的 Qt 不讨论. 尽管 Qt 有自己的开发环境,但老周必须说句不装逼的话:真的不好用.说起写代码,当然了,用记事本也能写.但是,有个高逼格的工具,写 ...
- mysql 01: source命令
使用mysql的source命令,执行sql脚本 之所以使用docker同步挂载卷的方法,是因为在docker中运行的mysql未安装vim或gedit等基本编辑器 不方便在mysql容器里直接写sq ...
- 两个比较好用的JS方法,用来处理树形结构!
一.平级结构转树形结构 /** * 平级结构转树形结构 * * 示例:const jsonDataTree = listTransToTreeData(jsonData, 'id', 'pid', ' ...
- 关于char[]数组通过scanf赋值使用上的一些问题。。
关于char[]数组通过scanf赋值使用上的一些问题. 假如我们有这么一段代码 #include <stdio.h> int main(void){ char c1[2]; scanf( ...