这是我可能在这里遗失的非常基本的东西,但直到现在我还没有看到这样的结果。
我有一个for循环,其中的options.headers.length是3
。在for循环中,我动态创建表头。理想情况下,此循环应该为0 1 and 2
运行三次,但是当我打印索引时,它会打印0,1,2,clean and remove
。我还没有看到clean and remove
作为索引。我知道这些信息还不够,但如果您有任何线索请建议。在调试之后我也得出结论,这可能是最重要的。
for (index in options.headers)
答案 0 :(得分:2)
如果您不想迭代clean
和remove
,请将循环更改为:
for (var i=0; i< options.headers.length;i++){
//use i for getting the array data
}
如果您使用for (index in options.headers)
,它也会迭代non-numeric
个键。
答案 1 :(得分:2)
不要只使用索引(因为那是= window.index = global = bad)使用var index (在这里阅读更多https://www.google.pl/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=globals+javascript+bad)
你必须检查数组是否将它作为自己的属性或者它的某些功能(更多回答后)
for (var index in options.headers) {
if (options.headers.hasOwnProperty(index) {
// code here
}
}
更多关于#2:
让我们说我们有
var array = [0,1,2,3];
除此之外,使用函数扩展数组(数组也可以在javascript和字符串中使用函数)
Array.prototype.sayHello = function() {
alert('Hello');
};
然后你的循环会将sayHello打印为数组的一部分,但那不是它自己的属性,只有数组
答案 2 :(得分:1)
我认为options.headers是一个数组?
当您(或您加载的某个框架)向Array原型添加方法时会发生这种情况。 &#34; for in&#34; loop将枚举这些添加的方法。因此,您应该使用以下代码执行循环:
for (var i = 0; i < options.headers.length; i++)
通过这种方式,您只能获得实际值,而不是添加方法。