使用for (var i = 0, len = a.length; i < len; i++)
,因爲它的方式更快,這是正確的方式或迭代數組中的項目。
第一:這是不正確與for (i in a)
來遍歷數組,因爲該迭代將包括除數組元素枚舉的屬性。如果已將任何方法或屬性添加到數組中,則在使用for (i in a)
時,它們將成爲迭代的一部分,這在嘗試遍歷數組元素時從來不是您想要的。
第二:正確的選項要快得多(快9-20倍)。請參閱此jsPerf測試,其中顯示for (var i = 0; i < len; i++)
選項在Chrome中速度提高約9倍,而在Firefox中提供更多速度差異:http://jsperf.com/for-loop-comparison2。
由於可能出現的問題的一個例子使用for (var i in a)
,當我使用時,包含在項目MooTools的圖書館,我得到的所有的這些值i
時:
0
1
2
3
$family
$constructor
each
clone
clean
invoke
associate
link
contains
append
getLast
getRandom
include
combine
erase
empty
flatten
pick
hexToRgb
rgbToHex
這似乎是mootools添加到數組對象的一堆方法。
是的。不要用'for..in'迭代數組,你可能會以隨機順序得到結果,並且還會得到額外的結果。只使用「方法1」,它也更快。 – Teemu 2012-03-09 21:06:54