循环方法对比

for、for…of…可以跳转循环;forEach 无法跳出循环
1.for
for(var i =0 ;i<list.length;i++){
if(list[i] == 5){
break
}
console.log(list[i]) // 1,2,3,4
}

2.for…0f…
for(const item of list){
if(item == 5){
break
}
console.log(item) // 1,2,3,4
}

3.forEach
list.forEach((item,index)=>{
if(item == 5) return
console.log(item) // 1,2,3,4,5,6,7,8
})

filter、map都会生成一个新数组,不改变原数组,find会改变原数组
const list = [
{ name: ‘头部导航’, type: ‘nav’, id: 1 },
{ name: ‘轮播’, type: ‘content’, id: 2 },
{ name: ‘页脚’, type: ‘nav’, id: 3 },
];
1.filter 会将符合回调函数条件的元素组成一个新数组,数组长度与原数组不同
const resultList = list.filter(item => {
return item.id == 3 ;
});
console.log(resultList); //[{ name: ‘页脚’, type: ‘nav’, id: 3 }]

2.map 会将回调函数的返回值组成一个新数组,数组长度与原数组一致
const newList = list.map(item => {
return item.id
});
console.log(newList);// [1, empty, 2, 3]

3.改变find返回的数组,也会改变原数组
const list = [
{ name: ‘头部导航’, id: 1 },
{ name: ‘轮播’, id: 2 },
{ name: ‘页脚’, id: 3 },
];
const result = list.find((item) => item.id === 3);
result.name = ‘我被改变了’
console.log(result) //{name:‘我被改变了’,id:3}
console.log(list) //[{ name: ‘头部导航’, id: 1 },{ name: ‘轮播’, id: 2 },{ name: ‘我被改变了’, id: 3 } ]

reduce

会循环当前的数组,侧重于进行"滚雪球"操作
reduce(函数,初始值)reduce((上次计算的结果,当前循环的item项)=>{return 上次计算的结果 + 当前循环的item项},0)

	基本用法
		let arr = [1,2,3,4,5]
		const total = arr.reduce((val,item)=>{
			return val+item
		},0)
		
	链式获取对象属性的值
		const  obj = {
			name:'zd',
			info:{
				address:{
					location:'地区A'
				}
			}
		}
		const arrs = ['info','address','location']
		// 可简写成下面方式
		const address  = arrs.reduce((newObj,k)=>newObj[k],obj)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值