前端 - 遍历(map/forEach/for...of/for...in)

遍历分为遍历对象和遍历数组,又可以分为遍历键值和遍历值

首先,map()和forEach()是Array自带的方法,Map对象也有forEach()方法,而for…in和for…of是对数组/类数组元素进行for循环操作的方法。
也就是说,在使用map()和forEach()的时候,需要用数组调用
map()和forEach()包含的匿名函数都是三个参数(item,index,input)(当前项,当前项的索引,原始数组)

1. map方法

map只能遍历数组,不能遍历对象
map 遍历的时候必须要有 return
如果数组本身是普通对象(如,number、string等)那么即使在 map中做了改变自己属性的操作也是无法生效的,如果数组本身是个对象,那么被改变的属性就会在原对象中生效

const arr = [11, 12, 13];
const b = arr.map(i => {
	console.log(i);
	return i*2;
})
console.log(arr,b);
// arr = [11, 12, 13];
// b = [22, 24, 26];
const arr = [{t: 1}, {t: 2}];
const b = arr.map(i => {
	const newObj = i;
	newObj.t = newObj.t*2;
	return newObj;
})
console.log(arr,b);
// arr = [{t: 2}, {t: 4}];
// b = [{t: 2}, {t: 4}];

2. forEach方法

forEach只能遍历数组,不能遍历对象
没有return属性,只有循环的作用,不能改变原先对象的属性,相当于 for() 循环

const arr = [11, 12, 13];
const b = arr.forEach(i => {
	return i*2;
})
console.log(arr,b);
// arr = [11, 12, 13];
// undefined

3. for…of 方法

forEach只能遍历数组,不能遍历对象
只有循环的作用,不能改变原先对象的属性
for of 不同于 forEach, 它可以与 break、continue和return 配合使用,也就是说 for of 循环可以随时退出循环
如果对象也想用该方法遍历, 可以使用 Object.keys() 获取对象的 key值集合后,再使用 for of

const arr = [11, 12, 13];
for (let i of arr) {
    console.log(i);
     if (i === 12) {
      break;
    }
}
// 11, 12
const arr = {a: 11, b: 12, c: 13}
for (let i of Object.keys(arr)) {
    console.log(i)
    if (i === 'b') {
      break;
    }
}
// a, b

4. for…in 方法

这个方法也是一个遍历的方法,和上面三种不一样的是,他不是遍历值,他是遍历键值,即属性名
如果是数组,则返回下标,如果是对象,则返回对象的键值
for in 循环会以任意顺序遍历键名
for in 可以可以中途退出循环

const arr = [11, 12, 13];
for (let i in arr) {
    console.log(i);
    if(i === '1') {
      break;
    }
}
// 0, 1
const arr = {a: 11, b: 12, c: 13};
for (let i in arr) {
    console.log(i);
    if (i === 'b') {
    	break
    }
}
//a, b
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值