JavaScript中for in、for of和for Each的用法和区别

本文详细介绍了JavaScript中for...in, for...of和Array.prototype.forEach的区别和用法。for...in主要用于遍历对象的键,不适合数组;for...of用于遍历可迭代对象的值,如数组;forEach则为数组提供便利的遍历功能,但无法中途退出。了解这些遍历方法的适用场景,能帮助开发者更好地选择合适的遍历策略。
摘要由CSDN通过智能技术生成

通常来讲,for…in一般用来遍历对象键名(key)for…of 以及forEach一般用来遍历数组属性值(value)

具体三者之间的用法如下:

for...in

for...in语句以任意顺序迭代一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。

for (variable in object){
    //statment
}
  

variable:在每次迭代时,variable 会被赋值为不同的属性名。

object:非 Symbol 类型的可枚举属性被迭代的对象。

示例:

var obj = {a:1, b:2, c:3};

for (var k in obj) {
  console.log( k + " = " + obj[k]);
}

// Output:
// a = 1  b = 2  c = 3

for ... in是为遍历对象属性而构建的,不建议与数组一起使用,数组可以用Array.prototype.forEach()for ... of

它最常用的地方应该是用于调试,可以更方便的去检查对象属性(通过输出到控制台或其他方式)。尽管对于处理存储数据,数组更实用些,但是你在处理有key-value数据(比如属性用作“键”),需要检查其中的任何键是否为某值的情况时,还是推荐用for ... in

for...of

for...of语句可迭代对象(包括 ArrayMapSetStringTypedArrayarguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

for (variable of iterable) {
    //statements
}

variable:在每次迭代中,将不同属性的值分配给变量。

iterable:被迭代枚举其属性的对象。

示例:

let iterable = [10, 20, 30];

for (const value of iterable) {
  console.log(value);
}
// 10  20  30

for…of不可以遍历普通对象,想要遍历对象的属性,可以用for…in循环,或内建的Object.keys()方法

Array.prototype.forEach()

forEach() 方法按升序为数组中含有效值的每一项执行一次 callback 函数,那些已删除或者未初始化的项将被跳过(例如在稀疏数组上)。

arr.forEach(callback(currentValue [, index [, array]])[, thisArg])

callback:为数组中每个元素执行的函数,该函数接收一至三个参数

  currentValue数组中正在处理的当前元素

  index:(可选) 数组中正在处理的当前元素的索引

  array:(可选)     forEach() 方法正在操作的数组

thisArg:(可选) 当执行回调函数 callback 时,用作 this 的值。

示例:

function logArrayElements(element, index, array) {
  console.log('a[' + index + '] = ' + element);
}

// 注意索引 2 被跳过了,因为在数组的这个位置没有项
[2, 5, , 9].forEach(logArrayElements);

//output: a[0] = 2  a[1] = 5  a[3] = 9

注意:除了抛出异常以外,没有办法中止或跳出 forEach() 循环。如果你需要中止或跳出循环,forEach() 方法不是应当使用的工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值