如何使增强的for循环只查看实际的数组内容

时间:2011-02-22 21:17:22

标签: javascript extjs

this.someArray = [1,2,3,4,5]
for(var i in this.someArray){console.log(this.someArray[i]);}

它不仅循环遍历数组元素,还像“删除”一样循环。我不想放弃增强循环并使用常规循环(因为它不方便)。有没有办法只循环遍历数组内容?

4 个答案:

答案 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);