JavaScript中的遍历方法

文章介绍了ES5中的for循环遍历数组下标,以及ES5新增的forEach、every、some方法。同时指出了for..in遍历对象的局限性,并强调ES6引入的for..of循环用于直接遍历数组值和对象迭代器的便利性。
摘要由CSDN通过智能技术生成

对于数值索引的数组来说,可以使用标准的 for 循环来遍历值:

var myArray = [1, 2, 3]; 

for (var i = 0; i < myArray.length; i++) {

 console.log( myArray[i] ); 

}

 // 1 2 3

这实际上并不是在遍历值,而是遍历下标来指向值,如 myArray[i]

ES5 中增加了一些数组的辅助迭代器 

forEach(..) 会遍历数组中的所有值并忽略回调函数的返回值。

every(..) 会一直运行直到回调函数返回 false(或者“假”值)

some(..) 会一直运行直到回调函数返回 true(或者 “真”值)

every(..) 和 some(..) 中特殊的返回值和普通 for 循环中的 break 语句类似,它们会提前终止遍历。

使用 for..in 遍历对象是无法直接获取属性值的,因为它实际上遍历的是对象中的所有可枚举属性,你需要手动获取属性值。如下

var myObject = { }; 

Object.defineProperty( 

myObject, 

"a", // 让 a 像普通属性一样可以枚举 

{ enumerable: true, value: 2 } 

); 



Object.defineProperty(

 myObject, 

"b", // 让 b 不可枚举 

{ enumerable: false, value: 3 } 

); 

myObject.b; // 3 

("b" in myObject); // true 



myObject.hasOwnProperty( "b" ); // true 



for (var k in myObject) { 

console.log( k, myObject[k] ); 

} 

// "a" 2

在数组上应用 for..in 循环有时会产生出人意料的结果,因为这种枚举不仅会包含所有数值索引,还会包含所有可枚举属性。最好只在对象上应用 for..in 循环,如果要遍历数组就使用传统的 for 循环来遍历数值索引。

那么如何直接遍历值而不是数组下标(或者对象属性)呢?幸好,ES6 增加了一种用来遍 历数组的 for..of 循环语法(如果对象本身定义了迭代器的话也可以遍历对象):  

var myArray = [ 1, 2, 3 ]; 

for (var v of myArray) {

 console.log( v );

} 

// 1 

// 2 

// 3

for..of 循环首先会向被访问对象请求一个迭代器对象,然后通过调用迭代器对象的 next() 方法来遍历所有返回值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值