JavaScript में 1…N ऐरे: सरल से लेकर हाई-परफॉरमेंस तक
\n\nनमस्ते, डेवलपर साथी! अगर आपने कभी "1 से N तक numbers का array बनाने" का काम किया है, तो आप अकेले नहीं हैं। Stack Overflow पर यह इतना लोकप्रिय सवाल है कि इसके हज़ारों व्यूज़ और दर्जनों जवाब हैं। सोचो, इसमें इतना मुश्किल क्या है? लेकिन असली चुनौती है: परफॉरमेंस, रीडेबिलिटी और कोड की versatility।
\n\nआज हम JavaScript में [1, 2, 3, ..., N] ऐरे बनाने के सभी मुख्य तरीकों को समझेंगे, उनकी स्पीड, elegance और उपयोग के आधार पर तुलना करेंगे। आप जानेंगे कि सामान्य प्रोजेक्ट के लिए कौन सा method चुनें, और कब हर मिलीसेकंड मायने रखता है। चलिए शुरू करते हैं!
\n\nयह क्यों ज़रूरी है? समस्या का संदर्भ
\n\nकल्पना करें: आप sorting algorithm लिख रहे हैं, test data generate कर रहे हैं, गेम के लिए grid बना रहे हैं, या बस numbers का sequence चाहिए। इन सभी मामलों में 1 से N तक array चाहिए। लगता है — for loop लगाओ और काम खत्म। लेकिन modern JavaScript में इतना syntactic sugar है कि भ्रमित होना आसान है।
हम 5 मुख्य approaches देखेंगे, classic से लेकर modern one-liners तक, और real-world conditions में उनकी परफॉरमेंस जाँचेंगे। अपना browser console और पसंदीदा editor तैयार रखें — मज़ा आने वाला है!
\n\nतरीका 1: क्लासिक for लूप
\n\nबुनियादी लेकिन भरोसेमंद तरीका, जो हर beginner जानता है:
\n\nfunction createArrayLoop(n) {\n const arr = [];\n for (let i = 1; i <= n; i++) {\n arr.push(i);\n }\n return arr;\n}\n\nconsole.log(createArrayLoop(5)); // [1, 2, 3, 4, 5]\n\nफायदे:
\n- \n
- सबसे ज़्यादा readable — JS सीखने वालों के लिए भी आसान। \n
- कोई hidden calls या magic नहीं। \n
- पुराने browsers सहित सभी environments में काम करता है। \n
नुकसान:
\n- \n
- कुछ alternatives से धीमा (लेकिन छोटे N के लिए कोई बड़ी बात नहीं)। \n
- साधारण काम के लिए ज़्यादा कोड। \n
तरीका 2: Array.from() map फंक्शन के साथ
\n\nES6 में आया elegant modern तरीका:
\n\nconst createArrayFrom = n => Array.from({ length: n }, (_, i) => i + 1);\n\nconsole.log(createArrayFrom(5)); // [1, 2, 3, 4, 5]\n\nयहाँ हम एक निश्चित length का array बनाते हैं और तुरंत map function से भरते हैं। Array.from का दूसरा argument एक mapper function है, जो current index i लेता है और i + 1 return करता है।
फायदे:
\n- \n
- बहुत concise और expressive। \n
- पहले से empty array बनाने की ज़रूरत नहीं। \n
- अच्छी परफॉरमेंस। \n
नुकसान:
\n- \n
- शुरुआती लोगों के लिए कम obvious। \n
- एक intermediate object
{ length: n }बनाता है। \n
तरीका 3: Spread ऑपरेटर + keys()
\n\nStack Overflow पर सबसे लोकप्रिय one-liners में से एक:
\n\nconst createArraySpread = n => [...Array(n).keys()].map(i => i + 1);\n\nconsole.log(createArraySpread(5)); // [1, 2, 3, 4, 5]\n\nयह कैसे काम करता है? Array(n) n empty elements का sparse array बनाता है। .keys() indices (0, 1, 2...) का iterator return करता है। Spread operator इसे normal array में बदलता है, फिर map values को +1 shift करता है।
फायदे:
\n- \n
- बहुत concise (एक ही call)। \n
- "Magical" लगता है — code review में colleagues को impress करता है। \n
नुकसान:
\n- \n
- बड़े N के लिए सबसे धीमा (double pass और intermediate arrays के कारण)। \n
- शुरुआती लोगों के लिए समझना मुश्किल। \n
- ज़्यादा memory consume करता है। \n
तरीका 4: Array.fill() + map()
\n\nएक और लोकप्रिय विकल्प:
\n\nconst createArrayFill = n => Array(n).fill().ma