为什么不推荐for...in遍历数组

36 篇文章 1 订阅

我们一般来说,使用for…in来遍历对象,使用for…of来遍历数组

总之,for…in 循环主要是为了遍历对象而生,不适用于遍历数组

for…of 循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象

我们强烈建议不要使用for…in来遍历数组
为什么???

因为for…in遍历的是对象的key或者是数组的下标。当然最重要的原因是,他会到原型链上寻找,遍历其中新增加的属性的key值

for of遍历的是数组元素值,
for in 遍历的是数组的索引(即键名)
for of遍历的只是数组内的元素,
for in 遍历的不只是数组内的元素,还有其新增的原型属性和索引

for of 遍历

Array.prototype.method=function(){
  console.log(this.length);
}
var myArray=[11,21,41,51,61,71]
myArray.name="数组";
for (var value of myArray) {
  console.log(value);
}
//输出数组每项的值:11,21,41,51,61,71

for in 遍历

Array.prototype.method=function(){
  console.log(this.length);
}
var myArray=[11,21,41,51,61,71]
myArray.name="数组";
for (var value in myArray) {
  console.log(value);
}
// 输出数据的下标以及新增属性和方法: 0,1,2,3,4,5,method,name

总结
1因为我们的for…in会遍历出拓展的方法和属性,所以当我们对Array进行扩展的时候,会打印出来,就比较的尴尬,不知所措
2我们的for…in得到的是key值,如果是数组的话,得到的是字符串类型的key值,如果这个时候进行下标操作的话,可能会出现奇奇怪怪的问题

for…in和for…of都可以使用break,continue的操作

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值