数组中的方法

forEach循环

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数

forEach() 方法的特性是: 遍历一旦开始则不能中止,无法使用 return 等方式跳出循环

代码示例:

const arr = ['aaa', 'bbb', 'ccc', 'ddd','eee']
arr.forEach((item, index)=> {
	console.log('OK');
	if(item === 'ccc') {
		console.log(index);
		return
	}
})

运行结果:

在寻找到指定的元素后,没有被 return 跳出循环,而是继续将遍历完成,这样在某些情况下会浪费性能

some循环

some循环在找到指定的项之后,可以通过 return true 固定写法终止 some 循环

代码示例:

arr.some((item,index) => {
	console.log('OK');
	if(item === 'ccc') {
		console.log(index);
		// 在找到对应的项之后 可以通过 return true 固定语法终止 some 循环
		return true
	}
})

运行结果:

every循环

在需要判断例如: 购物车中的商品是否被全选 之类的场景时,可以使用 every 循环来对条件进行判断

代码示例:

const arr = [
	{id: 1, name: '西瓜', state: true},
	{id: 2, name: '榴莲', state: false},
	{id: 3, name: '草莓', state: true}
]

// 需求: 判断数组中 水果是否被全选了 完整写法为 item => item.state === true
const result = arr.every(item => item.state)
console.log(result);

运行结果:

reduce循环

在需要类似于: 购物车计算所选商品总价的情景,可以用到 reduce 方法

代码示例:

const arr = [
	{id: 1, name: '西瓜', state: true, price: 10, count: 1},
	{id: 2, name: '榴莲', state: false, price: 80, count: 2},
	{id: 3, name: '草莓', state: true, price: 20, count: 3}
]

// 需求: 把购物车数组中 已勾选的水果总结累加起来
// 普通写法
// let amt = 0 // 总价
// arr.filter(item => item.state).forEach(item => {
// 	amt += item.price * item.count
// })
// console.log(amt);

// 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);

循环开始的时候,累加的结果还没有值,就从初始值中获取

每循环一项,都会把当前的总价格累加给 amt,第一次循环 return 出来的值,会作为第二次循环的初始值,即累加的结果,接着往后迭代

运行结果:

简写形式

上述代码可以简写成如下形式:

const result = arr.filter(item => item.state).reduce((amt, item) => amt += item.price * item.count, 0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值