JavaScript में for-in लूप के साथ ऐरे इटरेशन की गलती
ऐरे को इटरेट करने के लिए
for-of लूप का उपयोग करना चाहिए।
हालांकि, कभी-कभी शुरुआती गलती से
for-in लूप का उपयोग करने का प्रयास करते हैं।
आइए इस गलती के विशिष्ट लक्षणों को देखें।
मान लीजिए कि हमारे पास एक ऐरे है:
let arr = ['a', 'b', 'c'];
आइए इस ऐरे के एलिमेंट्स को इटरेट करें और उन्हें एक स्ट्रिंग में जोड़ें।
एक प्रोग्रामर ने पहले ही इस समस्या को हल कर लिया है,
लेकिन गलती से for-in लूप का उपयोग कर लिया।
आइए देखें कि उन्हें क्या मिला:
let res = '';
for (let elem in arr) {
res += elem;
}
console.log(res); // '012' प्रिंट करेगा
तो, परिणामस्वरूप स्ट्रिंग '012' मिलती है,
न कि 'abc'। आइए समझते हैं कि ऐसा क्यों हुआ।
आखिर ऐरे for-in लूप से इटरेट क्यों हो गया?
बात यह है कि JavaScript में ऐरे ऑब्जेक्ट का एक विशेष
मामला है। इसलिए वास्तव में यह कोड सही है।
लेकिन ऐसा नहीं करना चाहिए।
दरअसल, for-in लूप कुछ शर्तों下
अतिरिक्त प्रॉपर्टीज को भी इटरेट कर सकता है,
और आपको ऐरे के एलिमेंट्स के अलावा कुछ अवांछित
चीजें भी मिल सकती हैं।
ऐरे को हमेशा for-of लूप से ही इटरेट करें।
अब समझते हैं कि हमें इतना अजीब परिणाम क्यों दिखाई दिया।
बात यह है कि for-in लूप से इटरेशन के दौरान
वेरिएबल elem में वास्तव में कीज़ (इंडेक्स) आती हैं,
चाहे इस वेरिएबल का नाम कितना भी भ्रामक क्यों न हो।
आइए की गई गलती को सुधारें और सही कोड लिखें:
let arr = ['a', 'b', 'c'];
let res = '';
for (let elem of arr) {
res += elem;
}
console.log(res); // 'abc' प्रिंट करेगा