this.someArray = [1,2,3,4,5]
for(var i in this.someArray){console.log(this.someArray[i]);}
它不僅遍歷數組元素,而且還像'remove'一樣垃圾。我不想放棄增強的循環並使用常規循環(因爲它不方便)。有沒有辦法只循環數組內容?如何使增強的for循環僅查看實際的數組內容
this.someArray = [1,2,3,4,5]
for(var i in this.someArray){console.log(this.someArray[i]);}
它不僅遍歷數組元素,而且還像'remove'一樣垃圾。我不想放棄增強的循環並使用常規循環(因爲它不方便)。有沒有辦法只循環數組內容?如何使增強的for循環僅查看實際的數組內容
你的循環捕捉甲基除了數組的內容外,還有Array.prototype
的ods和屬性。就像JCOC611所說的那樣,通常最好是通過「正確」方式遍歷數組,但如果你不想這樣做,你可以使用數組的hasOwnProperty
函數來檢查一個屬性是否真的在數組中,或者它是否的Array.prototype
部分:
this.someArray = [1, 2, 3, 4, 5];
for (var i in this.someArray) {
if (this.someArray.hasOwnProperty(i)) {
console.log(this.someArray[i]);
}
}
詳情請參見這個問題:Why is using "for...in" with array iteration a bad idea?
而且,這個博客帖子有很多的信息:http://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/
決不遍歷像一個數組,這樣做:
for(var i=0;i<this.someArray.length;i++){...}
「我不想放棄增強循環和使用常規循環(因爲它是不方便)」
對不起,但據我所知,這是正確的方式通過數組循環...
+1使用粗體。這是一個需要聽取的重要聲明。 – Phrogz 2011-02-22 21:53:48
對於數組,使用老式的for循環有索引可能是明智的做法,特別是從喲開始你經常需要知道指數是什麼。顯示了通過任何物體的屬性循環時
然而,爲了避免繼承屬性,你可以使用hasOwnProperty
功能:
for (var prop in someObject){
if (someObject.hasOwnProperty(prop) {
console.log(someObject[prop]);
}
}
你也有Ext.each它可以是很有用的。
Ext.each(myArray, console.log);
不應該是'console.log(i)'反正嗎? – Dutchie432 2011-02-22 21:22:06
是...良好趕上 – ppecher 2011-02-22 21:24:19