for in数组遍历的坑

前端小白,今天遇到了一个很严重bug。真的很小白!!!我对数组使用了for in遍历,然后for in会遍历到数组的后面添加的原型链属性,并不会遍历到原生原型链上的属性!!!并不是简单地便利数组中的数据。


1.对数组用for in时

Array.prototype.istrue = function(value) {return true;}
var a = [1,2];
for(var i in a) {

console.log(a[i]);}

输出结果:
 1
 2
function(value) {return true;}

所以数组的遍历中千万不要用for in,我们一般对对象的遍历使用。同时上面的i变量是string,并不是number


2.一般来说,我们对对象的遍历通常用for in

var a = {"x":1,"y":2};
for(var i in a) {
console.log(a[i]);}

输出结果:
 1
 2


3.对数组的遍历我平时常用的是forEach和map,很方便


4.如果使用了for in遍历数组,就用hasOwnProperty来规避遍历到原型链上的属性或方法

Array.prototype.istrue = function(value) {return true;}
var a = [1,2];
for(var i in a) {

if(a.hasOwnProperty(i){

console.log(a[i]);

})

}

输出结果:
 1
 2


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值