for...in
किसी सरणी के लिए लूप का उपयोग करना गलत नहीं है, हालांकि मैं अनुमान लगा सकता हूं कि किसी ने आपको क्यों बताया:
1.) पहले से ही एक उच्च क्रम फ़ंक्शन, या विधि है, जिसमें एक सरणी के लिए वह उद्देश्य है, लेकिन अधिक कार्यक्षमता और झुकाव सिंटैक्स है, जिसे 'forEach' कहा जाता है: Array.prototype.forEach(function(element, index, array) {} );
2.) सरणी हमेशा लंबाई है, लेकिन for...in
और forEach
वह यह है कि किसी भी मूल्य के लिए एक समारोह निष्पादित नहीं 'undefined'
, केवल अनुक्रमणिका परिभाषित एक मूल्य है कि के लिए। इसलिए यदि आप केवल एक मान प्रदान करते हैं, तो ये लूप केवल एक बार किसी फ़ंक्शन को निष्पादित करेंगे, लेकिन चूंकि एक सरणी को एन्यूमरेट किया गया है, यह हमेशा उच्चतम सूचकांक तक एक लंबाई होगी जिसमें एक परिभाषित मूल्य होता है, लेकिन इन का उपयोग करते समय उस लंबाई को किसी का ध्यान नहीं जा सकता है छोरों।
3.) लूप के लिए मानक किसी फ़ंक्शन को निष्पादित करेगा जैसा कि आप मापदंडों में परिभाषित करते हैं, और जब से कोई सरणी क्रमांकित होती है, तो यह परिभाषित करने के लिए और अधिक समझ में आता है कि आप किसी फ़ंक्शन को कितनी बार निष्पादित करना चाहते हैं। अन्य छोरों के विपरीत, लूप के लिए फिर सरणी में प्रत्येक सूचकांक के लिए एक फ़ंक्शन निष्पादित कर सकता है, चाहे मान परिभाषित किया गया हो या नहीं।
संक्षेप में, आप किसी भी लूप का उपयोग कर सकते हैं, लेकिन आपको यह याद रखना चाहिए कि वे कैसे काम करते हैं। उन स्थितियों को समझें जिन पर अलग-अलग छोरों को दोहराया जाता है, उनकी अलग-अलग कार्यक्षमताएं होती हैं, और महसूस होता है कि वे अलग-अलग परिदृश्यों के लिए कम या ज्यादा उपयुक्त होंगे।
इसके अलावा, सामान्य रूप forEach
से for...in
लूप की तुलना में विधि का उपयोग करने के लिए यह एक बेहतर अभ्यास माना जा सकता है , क्योंकि यह लिखना आसान है और अधिक कार्यक्षमता है, इसलिए आप केवल इस विधि और मानक का उपयोग करने की आदत में पड़ सकते हैं, लेकिन आपके कहते हैं।
नीचे देखें कि पहले दो लूप केवल कंसोल.लॉग स्टेटमेंट को एक बार निष्पादित करते हैं, जबकि लूप के लिए मानक इस मामले में फ़ंक्शन को कई बार निष्पादित करता है, इस मामले में, array.length = 6।
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]