this.someArray = [1,2,3,4,5]
for(var i in this.someArray){console.log(this.someArray[i]);}
它不仅循环遍历数组元素,还像“删除”一样循环。我不想放弃增强循环并使用常规循环(因为它不方便)。有没有办法只循环遍历数组内容?
答案 0 :(得分:2)
从不循环遍历这样的数组,执行此操作:
for(var i=0;i<this.someArray.length;i++){...}
“我不想放弃增强循环并使用常规循环(因为它不方便)”
很抱歉,但据我所知,这是循环播放数组的正确方式......
答案 1 :(得分:2)
除了数组的内容之外,你的循环还在捕捉Array.prototype
的方法和属性。就像JCOC611所说的那样,通常更好地循环数组&#34; right&#34;但是如果你不想这样做,你可以使用数组的hasOwnProperty
函数检查一个属性是否实际在数组中,或者它是否是{{1}的一部分}:
Array.prototype
有关详细信息,请参阅此问题:Why is using "for...in" with array iteration a bad idea?
此外,此博客文章还提供了大量信息:http://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/
答案 2 :(得分:2)
对于一个数组,使用带索引的老式for循环可能是明智之举,特别是因为你经常需要知道索引是什么。
但是,为了避免在循环任何对象的属性时显示继承的属性,可以使用hasOwnProperty
函数:
for (var prop in someObject){
if (someObject.hasOwnProperty(prop) {
console.log(someObject[prop]);
}
}
答案 3 :(得分:0)
你也有Ext.each,它可能有时候很有用。
Ext.each(myArray, console.log);