当前位置:
首页 > temp > JavaScript教程 >
-
第七十九篇:数组方法(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的值返回
出处:https://www.cnblogs.com/FatTiger4399/p/16246007.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数