JavaScript Array填充vs for ... in

时间:2011-08-19 07:28:44

标签: javascript arrays

我在Chrome上写了一些JavaScript,然后尝试在IE8中运行它。我遇到的第一件事是缺少Array.mapArray.filter以及所有有用的表兄弟。为了解决这个问题,我添加了一些找到的垫片here

这打破了我的所有for ... in ...循环,如下所示:

>> c = [1];
{...}
>> for(i in c) { console.log(i);}
LOG: 1
LOG: indexOf
LOG: lastIndexOf
LOG: filter

我希望它只迭代数组条目。有没有办法解决这个问题,还是我需要回去编写for(i=0;i<c.length;++i)循环?

1 个答案:

答案 0 :(得分:2)

你需要使用hasOwnProperty来清理你的循环,shim会为数组原型添加功能,最后你会在添加的函数上循环。

for(i in c){
    if(c.hasOwnProperty(i))
    {
        console.log(i);
    }
}

参考文献: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

http://msdn.microsoft.com/en-us/library/328kyd6z(v=vs.94).aspx

Crockford for .. in http://javascript.crockford.com/code.html搜索“hasOwnProperty”