आप दो तरह से एक सरणी से अधिक पाश कर सकते हैं: एक सरणी के अनुक्रमित तत्वों से अधिक एक अंकीय पाश, या एक for in
ऑब्जेक्ट गुण पर सरणी के ऊपर लूप।
var a = ['a','b'];
a[3] = 'e';
a[2] = 'd';
a.foo = function() { };
for(key in a)
console.log(key);
यह 0 1 3 2 foo
देता है, के बाद से है कि आदेश गुण परिभाषित किया गया है (लेकिन कोई वादा है कि आपके ब्राउज़र भी, कि व्यवहार प्रदर्शन करने की जरूरत है या तो है)।
अब तक, संख्यात्मक लूप बेहतर दिखते हैं, लेकिन वे अतिरिक्त सरणी, यानी, अंतराल के साथ सरणी संभाल नहीं सकते हैं। ES5 Array.forEach
अनिर्दिष्ट मानों को छोड़ देता है, जबकि jQuery का $.each
length
संपत्ति के आधार पर एक संख्यात्मक पाश का उपयोग करता है।
var a = [1,2];
a[1000000] = 4;
a[9000] = 3;
a.foo = function() {};
// outputs 0, 1, 9000, 1000000 -- note they are in order
a.forEach(function(elem, index){ console.log(index); })
// outputs 0, 1, 9000, 1000000 -- same as above
_.each(a, function(elem, index){ console.log(index); })
// outputs a million values and locks up your browser for a while
$.each(a, function(index){ console.log(index); })
तो, दोनों forEach
और $.each
सूचकांक क्रम में अपने मान, लेकिन forEach
और अंडरस्कोर विरल सरणियों के लिए बेहतर लग रहे हैं, क्योंकि वे अनुक्रमणिका कि उन्हें सौंपे गए एक मूल्य नहीं किया है पर ध्यान न दें।
सुनिश्चित करें कि आप स्पष्ट हैं कि ऐरे क्या है और जावास्क्रिप्ट में कोई ऑब्जेक्ट क्या है ... – Pointy