पायथन रेंज के समान जावास्क्रिप्ट फ़ंक्शन ()


96

क्या पायथन के समान जावास्क्रिप्ट में एक फ़ंक्शन है range()?

मुझे लगता है कि हर बार निम्नलिखित पंक्तियों को लिखने से बेहतर तरीका होना चाहिए:

array = new Array();
for (i = 0; i < specified_len; i++) {
    array[i] = i;
}

1
@clwen: दुर्भाग्य से वहाँ नहीं है, लेकिन मेरे कोड पर एक नज़र डालें - मैंने एक फ़ंक्शन लिखा है जिसका उद्देश्य range()पायथन में काम करने के तरीके का अनुकरण करना है , इसलिए आप इसका उपयोग कर सकते हैं। जावास्क्रिप्ट में ऐसा कोई फ़ंक्शन नहीं है, लेकिन विभिन्न फ्रेमवर्क के लिए कुछ प्लगइन्स हैं, जैसे कि Rangeमूट्स के लिए क्लास
टेडेक

जवाबों:


89

नहीं , कोई नहीं है, लेकिन आप एक बना सकते हैं

पायथन के जावास्क्रिप्ट का कार्यान्वयन range()

पायथन में यह कैसे काम करता है , यह अनुकरण करने की कोशिश कर रहा हूं, मैं इसके समान कार्य करूंगा:

function range(start, stop, step) {
    if (typeof stop == 'undefined') {
        // one param defined
        stop = start;
        start = 0;
    }

    if (typeof step == 'undefined') {
        step = 1;
    }

    if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) {
        return [];
    }

    var result = [];
    for (var i = start; step > 0 ? i < stop : i > stop; i += step) {
        result.push(i);
    }

    return result;
};

इस jsfiddle एक सबूत के लिए देखें ।

range()जावास्क्रिप्ट और पायथन के बीच तुलना

यह निम्नलिखित तरीके से काम करता है:

  • range(4)रिटर्न [0, 1, 2, 3],
  • range(3,6)रिटर्न [3, 4, 5],
  • range(0,10,2)रिटर्न [0, 2, 4, 6, 8],
  • range(10,0,-1)रिटर्न [10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
  • range(8,2,-2)रिटर्न [8, 6, 4],
  • range(8,2)रिटर्न [],
  • range(8,2,2)रिटर्न [],
  • range(1,5,-1)रिटर्न [],
  • range(1,5,-2)रिटर्न [],

और इसका पायथन समकक्ष ठीक उसी तरह काम करता है (कम से कम उल्लेखित मामलों में):

>>> range(4)
[0, 1, 2, 3]
>>> range(3,6)
[3, 4, 5]
>>> range(0,10,2)
[0, 2, 4, 6, 8]
>>> range(10,0,-1)
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> range(8,2,-2)
[8, 6, 4]
>>> range(8,2)
[]
>>> range(8,2,2)
[]
>>> range(1,5,-1)
[]
>>> range(1,5,-2)
[]

तो अगर आपको पायथन के समान काम करने के लिए एक फ़ंक्शन की आवश्यकता है range(), तो आप उपर्युक्त समाधान का उपयोग कर सकते हैं।


4
हो सकता है कि अतिरिक्त रक्षात्मक जाँच के कुछ जोड़े - सुनिश्चित करें कि पारित किए गए तर्क संख्याओं के लिए सभी सामंजस्यपूर्ण हैं और यह सुनिश्चित करते हैं कि stopइससे अधिक है start(और यदि नहीं तो उन्हें स्वैप करें)।
रस कैम

1
@RussCam: यह इंगित करने के लिए धन्यवाद। मैंने प्रकारों आदि के लिए रक्षात्मक चेक नहीं जोड़े, लेकिन मैंने तत्वों के रिवर्स ऑर्डर को लागू किया - यह अब पायथन समकक्ष के समान ही काम करता है, जब अंतिम परम नकारात्मक पूर्णांक होता है।
टाडेक

@RussCam: start >= stopयदि लक्ष्य वास्तव में पायथन की सीमा का अनुकरण कर रहा है, तो एक खाली सरणी के लिए अग्रणी आवश्यक है। और मेरा तर्क है कि यह वैसे भी अधिक सहज है।

1
@ डायलेन: चेक अधिक जटिल हो सकता है, क्योंकि start >= stopइस फ़ंक्शन के लिए range()पाइथन की तरह व्यवहार करना सरल नहीं है । मैंने अपना उत्तर अपडेट कर दिया है।
टेडेक

@delnan - मैं पायथन कार्यान्वयन से परिचित नहीं हूँ। मुझे लगता है कि अगर यह केवल पायथन कार्यान्वयन से परिचित झांकियों द्वारा उपयोग किया जा रहा है, तो इसका अनुकरण करने के लिए समझ में आता है :)
Russ कैम

125

ES6 में एक बहुत ही सरल रेंज के लिए:

let range = n => Array.from(Array(n).keys())

से bigOmega की टिप्पणी , इस का उपयोग कर छोटा किया जा सकता फैले वाक्य रचना :

let range = n => [...Array(n).keys()]

41
इसका एक सरल संस्करण हैlet range = n => [...Array(n).keys()]
bigOmega

2
@ भारथराज महान, धन्यवाद! कांस्टेबल क्यों नहीं? मैं
कास्ट

आप सही हैं, मैं constजितना संभव हो उतना उपयोग करने की कोशिश करता हूं , लेकिन यहां यह सिर्फ सरणी का संदर्भ होगा, इसलिए यह सरणी अभी भी संपादन योग्य होगी: 'डी
बिगओमेगा

1
@bigOmega यह constफ़ंक्शन पर ही लागू होगा, न कि इसके रिटर्न मान पर। आप शायद किसी भी तरह से फ़ंक्शन को संशोधित नहीं करना चाहते हैं।
सोलोमन उको

7
यह उत्तर एक प्रारंभिक सूचकांक और चरण आकार को बढ़ाने की क्षमता के लिए जिम्मेदार नहीं है।
Flush

29

: नीचे दिया गया कोड अप्रचलित है, लेकिन सौभाग्य से ES6 मानकीकृत जनरेटर और yieldकीवर्ड है, और वे प्लेटफार्मों भर में सार्वभौमिक रूप से समर्थित हैं। यहाँrange() प्रयोग करके आलसी का एक उदाहरण yieldपाया जा सकता है


पहले से ही कहा गया है, इसके अलावा, जावास्क्रिप्ट 1.7+ पुनरावृत्तियों और जनरेटर के लिए समर्थन प्रदान करता है, जिसका उपयोग Python2 में एक आलसी, मेमोरी-कुशल संस्करण range, xrangeसिमलर बनाने के लिए किया जा सकता है :

function range(low, high) {  
    return {
        __iterator__: function() {
            return {  
                next: function() {
                    if (low > high)
                        throw StopIteration;  
                    return low++;
                }
            }
        }
    }
}

for (var i in range(3, 5))  
  console.log(i); // 3,4,5

1
+1 महान विचार! क्या आप भी stepतर्क को लागू कर सकते हैं और मेरे जवाब से मानों पर परीक्षण कर सकते हैं ? आपका जवाब उन अनुप्रयोगों के लिए बहुत अच्छा है जहाँ हमारे मन में बहुत विशिष्ट ब्राउज़र हैं (यह Google Chrome, Safari और IE संस्करण में 9: stackoverflow.com/a/2209743/548696 से पहले काम नहीं करेगा )।
Tadeck

@ टैडेक: विडंबना यह है कि मैंने हाल ही में एक बहुत ही समान प्रश्न पूछा है , इसे देखें - कुछ अच्छे उत्तर। BTW, आपका कोड मेरा परीक्षण पास नहीं करता है; (
georg

क्या आप परीक्षण डेटा और अपेक्षित परिणाम साझा कर सकते हैं? मुझे इसमें सुधार करने में खुशी होगी, लेकिन मेरे परीक्षण 100% उत्तीर्ण हैं। क्या आप कह रहे हैं कि मैंने जो कोड दिया है, वह इस प्रश्न में लिपि द्वारा ठीक से पार्स नहीं किया गया है: stackoverflow.com/q/12173856/548696 ?
ताडेक

@ टैडेक: कोई बात नहीं। मैंने स्लाइस का परीक्षण किया और आपका कोड श्रेणियों के लिए है।
जॉर्ज

1
पायथन का range"अंतिम" मूल्य बाहर रखा गया है (इसलिए उपरोक्त कोड के >=बजाय किसी का उपयोग करने की आवश्यकता है >)
Pac0

23

@Tadeck और @georg दोनों जवाबों को एकसाथ फ़्यूज़ करते हुए , मैं इसके साथ आया:

function* range(start, stop, step = 1) {
    if (stop == null) {
        // one param defined
        stop = start;
        start = 0;
    }

    for (let i = start; step > 0 ? i < stop : i > stop; i += step) {
        yield i;
    }
}

इसे लूप के लिए उपयोग करने के लिए आपको लूप की ES6 / JS1.7 की आवश्यकता है:

for (let i of range(5)) {
    console.log(i);
}
// Outputs => 0 1 2 3 4

for (let i of range(0, 10, 2)) {
    console.log(i);
}
// Outputs => 0 2 4 6 8

for (let i of range(10, 0, -2)) {
    console.log(i);
}
// Outputs => 10 8 6 4 2

यदि आप ES6 का उपयोग कर रहे हैं तो डिफ़ॉल्ट पैरामीटर का उपयोग क्यों नहीं किया जा रहा है ?
अमीन NAIRI

@Gradiuss कि के लिए काम करेगा stepपैरामीटर है, लेकिन जब stopमें, दोनों पास नहीं की जाएगी startऔर stopजरूरत को बदलने की। मैं इसे अपडेट
करूंगा

2
डब्ल्यूटीजी, यह अब तक प्रस्तुत सबसे अच्छा कार्यान्वयन है। यह जनरेटर का उपयोग करता है (अच्छा है, क्योंकि मेमोरी में पूरे अनुक्रम को स्टोर करने की कोई आवश्यकता नहीं है) और बहुत ही रसीला है।
लुसियो पाइवा

अपरिभाषित अशक्त वस्तु की तरह एक संकेतक है। 3 समान संकेतों के साथ तुलना करना संभव है: यदि (रोक === अपरिभाषित) {3 बराबर संकेतों की तुलना ऑटो कास्टिंग के बिना की जाती है। तुलना भी प्रकार की तुलना करें। 2 बराबर संकेतों की तुलना ऑटो कास्टिंग से दूसरे पक्ष प्रकार से की जाती है।
शिमोन डूडकिन

20

rangeपायथन 2 से फ़ंक्शन का एक पोर्ट अंडरस्कोर.ज और लॉश यूटिलिटी लाइब्रेरी (कई अन्य उपयोगी उपकरणों के साथ) द्वारा प्रदान किया जाता है । अंडरस्कोर डॉक्स से कॉपी किए गए उदाहरण:

_.range(10);
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
_.range(1, 11);
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
_.range(0, 30, 5);
=> [0, 5, 10, 15, 20, 25]
_.range(0, -10, -1);
=> [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
_.range(0);
=> []

15

Numberप्रोटोटाइप के लिए एक पुनरावृत्ति संलग्न करके प्राप्त किया जा सकता है

  Number.prototype[Symbol.iterator] = function* () { 
     for (var i = 0; i <= this; i++) {
       yield i
     } 
  }

[...5] // will result in [0,1,2,3,4,5]

काइल सिम्पसन के कोर्स रिथिंकिंग एसिंक्रोनस जावास्क्रिप्ट से लिया गया


7
यह वास्तव में अच्छा है, लेकिन प्रोटोटाइप को ओवरराइड करना बहुत नाजुक है: '(
m0meni

8

यहाँ एक उत्तर के लिए एक छोटा सा विस्तार है यदि आपको रेंज की शुरुआत और समाप्ति दोनों को निर्दिष्ट करने की आवश्यकता है:

let range = (start, end) => Array.from(Array(end + 1).keys()).slice(start);

7

हेयर यू गो।

यह सूचकांक संख्या के साथ प्रत्येक सूचकांक के मूल्य को (या अधिलेखित) लिख देगा।

Array.prototype.writeIndices = function( n ) {
    for( var i = 0; i < (n || this.length); ++i ) this[i] = i;
    return this;
};

यदि आप एक संख्या प्रदान नहीं करते हैं, तो यह ऐरे की वर्तमान लंबाई का उपयोग करेगा।

इसे इस तरह उपयोग करें:

var array = [].writeIndices(10);  // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

5

आकार की एक सरणी पाने के लिए x, यहां किसी भी पुस्तकालय का उपयोग किए बिना एक-लाइनर है

var range = n => Array(n + 1).join(1).split('').map((x, i) => i)

के रूप में काम करता है

> range(4)
[0, 1, 2, 3]

2
var range = n => Array(n).fill().map((e, i) => i);
वैलेन

और xजब आप वास्तव nमें पैरामीटर नाम के रूप में इस्तेमाल करते हैं तो 'आकार ' क्यों कहते हैं
वेलन

5

निम्नलिखित पायथन की रेंज का प्राकृतिक अनुकूलन है () जावास्क्रिप्ट के लिए कार्य:

// Generate range from start (inclusive) to stop (exclusive):
function* range(start, stop, step = 1) {
   if (stop === undefined) [start, stop] = [0, start];
   if (step > 0) while (start < stop) yield start, start += step;
   else if (step < 0) while (start > stop) yield start, start += step;
   else throw new RangeError('range() step argument invalid');
} 

// Examples:
console.log([...range(3)]);       // [0, 1, 2]
console.log([...range(0, 3)]);    // [0, 1, 2]
console.log([...range(0, 3, -1)]);// []
console.log([...range(0, 0)]);    // []
console.log([...range(-3)]);      // []
console.log([...range(-3, 0)]);   // [-3, -2, -1]

यह किसी भी तर्क का समर्थन करता है जिसकी तुलना की जा सकती है 0और इसके stopद्वारा वेतन वृद्धि की जा सकती है step। यह पायथन संस्करण के समान व्यवहार करता है जब संख्याओं से अधिक का उपयोग नहीं किया जाता है Number.MAX_SAFE_INTEGER

कृपया निम्नलिखित कोने के मामलों पर ध्यान दें:

[...range(0, 0, 0)];        // RangeError: range() step argument invalid
[...range(Number.MAX_SAFE_INTEGER + 1, Number.MAX_SAFE_INTEGER + 2)];  // []
[...range(Number.MAX_SAFE_INTEGER + 2, Number.MAX_SAFE_INTEGER + 3)];  // Infinite loop
[...range(0.7, 0.8, 0.1)];  // [0.7, 0.7999999999999999]
[...range('1', '11')];      // ['1']
[...range('2', '22')];      // Infinite loop

@ Tadeck's , @ Volv's और @ janka102 के जवाब के विपरीत , जो लौटते हैं [], undefinedया stepमूल्यांकन करने पर एक अनंत लूप में प्रवेश करते हैं 0या NaN, यह जनरेटर फ़ंक्शन पायथन के व्यवहार के समान अपवाद फेंकता है।


माना। यद्यपि अन्य उत्तर अपने तरीके से सुरुचिपूर्ण हैं, यह दृष्टिकोण और कार्यक्षमता बहुत अधिक पायथोनिक है।
ट्रैविस क्लार्क

4

आगे ES6 डिफ़ॉल्ट मापदंडों के साथ परिष्कृत।

let range = function*(start = 0, stop, step = 1) {
  let cur = (stop === undefined) ? 0 : start;
  let max = (stop === undefined) ? start : stop;
  for (let i = cur; step < 0 ? i > max : i < max; i += step)
    yield i
}

इस तरह से वास्तव में रेंज दिखना चाहिए।
कोनराड लिंकोस्की

4

pythonicपायथन के rangeव्यवहार की नकल करता है, यह जेएस के जनरेटर ( yield) का उपयोग कर सकता है , range(stop)और दोनों range(start, stop, step)मामलों का उपयोग कर सकता है। इसके अलावा, pythonicके rangeसमारोह एक रिटर्न Iteratorवस्तु अजगर के समान है कि समर्थन करता है mapऔर filter, इसलिए एक के बाद एक-लाइनर्स की तरह कल्पना कर सकता है:

import {range} from 'pythonic';
// ...
const results = range(5).map(wouldBeInvokedFiveTimes);
// `results` is now an array containing elements from
// 5 calls to wouldBeInvokedFiveTimes

का उपयोग कर स्थापित करें npm:

npm install --save pythonic

प्रकटीकरण मैं लेखक और Pythonic का अनुचर हूँ


3

MDN इस दृष्टिकोण की सिफारिश करता है: अनुक्रम जनरेटर (रेंज)

// Sequence generator function (commonly referred to as "range", e.g. Clojure, PHP etc)
const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));

// Generate numbers range 0..4
console.log("range(0, 4, 1):", range(0, 4, 1));
// [0, 1, 2, 3, 4] 

// Generate numbers range 1..10 with step of 2 
console.log("\nrange(1, 10, 2):", range(1, 10, 2));
// [1, 3, 5, 7, 9]

// Generate the alphabet using Array.from making use of it being ordered as a sequence
console.log("\nrange('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1).map(x => String.fromCharCode(x))", range('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1).map(x => String.fromCharCode(x)));
// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]


2

आप अंडरस्कोर लाइब्रेरी का उपयोग कर सकते हैं । इसमें सरणियों और कई और अधिक के साथ काम करने के लिए दर्जनों उपयोगी कार्य शामिल हैं।


2

क्या जावास्क्रिप्ट में पायथन की रेंज () के समान एक फ़ंक्शन है?

यहां समाधान के सभी पायथन 2 की सीमा का उल्लेख कर रहे हैं (शायद कोड उदाहरण के कारण आपने दिया था)। हालांकि पायथन 3 में, रेंज () विधि एक पुनरावृत्ति देता है। जावास्क्रिप्ट में पुनरावृत्तियां भी हैं और वे पूरे सरणी को उत्पन्न करने और इसे मेमोरी में संग्रहीत करने की तुलना में अधिक स्थान कुशल हैं।

तो पायथन 3 के range(n)कार्य का अधिक सटीक प्रतिनिधित्व है Array(n).keys()

उदाहरण के लिए:

for (let i of Array(n).keys()) {
  console.log(i) // 0, 1, 2, 3, ..., n
}

एक और उदाहरण (जो पहले से ही अन्य उत्तरों में शामिल हो चुका है)। सरणी (ES6) के लिए पुनरावृत्ति परिवर्तित करना:

let ary = [...Array(n).keys()];
// ary = [0, 1, 2, 3, ..., n]

1

अभी भी कोई बिल्ट-इन फ़ंक्शन नहीं है, जो इसके बराबर है range(), लेकिन सबसे हाल के संस्करण - ES2015 के साथ - आप अपना खुद का कार्यान्वयन बना सकते हैं। यहाँ इसका एक सीमित संस्करण है। सीमित क्योंकि यह कदम पैरामीटर को ध्यान में नहीं रखता है। बस न्यूनतम, अधिकतम।

const range = (min = null, max = null) =>
  Array.from({length:max ? max - min : min}, (v,k) => max ? k + min : k)

यह Array.fromकिसी भी ऑब्जेक्ट से एक सरणी बनाने में सक्षम विधि द्वारा पूरा किया गया है जिसमें एक lengthसंपत्ति है। तो सिर्फ एक lengthसंपत्ति के साथ एक साधारण वस्तु में गुजरने से एक ArrayIterator तैयार होगा lengthजो वस्तुओं की संख्या को उत्पन्न करेगा ।


1

यह मेरा पसंदीदा तरीका है। यह आपको पायथन में एक या दो इनपुट निर्दिष्ट करने की अनुमति देता है।

function range(start, end) {
  return Array.from(Array(end||start).keys()).slice(!!end*start)
}

0

यहाँ es6रेंज का एक और कार्यान्वयन है

// range :: (from, to, step?) -> [Number]
const range = (from, to, step = 1) => {
  //swap values if necesery
  [from, to] = from > to ? [to, from] : [from, to]
  //create range array
  return [...Array(Math.round((to - from) / step))]
    .map((_, index) => {
      const negative = from < 0 ? Math.abs(from) : 0
      return index < negative ? 
        from + index * step  :
        (index - negative + 1) * step
    })
}  

range(-20, 0, 5)
  .forEach(val => console.log(val))

for(const val of range(5, 1)){
   console.log(`value ${val}`)
}


हम से एक सरणी उत्पन्न करने के लिए क्या चाहते हैं -20के लिए -30?
अमीन NAIRI

हम्म, यह एक -30 से -20 तक एक सरणी उत्पन्न करेगा, लेकिन यदि आप चाहें तो रिवर्स संपत्ति को शामिल करने के लिए इसे आसानी से संशोधित किया जा सकता है। मैं इसमें शामिल करने के लिए ऊपर दिए गए उत्तर को संपादित
करूंगा

0

नहीं, कोई नहीं है, लेकिन आप एक बना सकते हैं।

मैं रेंज के पायथन 3 व्यवहार का आंशिक हूँ। आप पायथन रेंज के जावास्क्रिप्ट के कार्यान्वयन के नीचे पाएंगे ():

function* range(start=0, end=undefined, step=1) {    
    if(arguments.length === 1) {end = start, start = 0}    
    
    [...arguments].forEach(arg => {    
        if( typeof arg !== 'number') {throw new TypeError("Invalid argument")}                               
    })    
    if(arguments.length === 0) {throw new TypeError("More arguments neede")}    
        
    if(start >= end) return                                                                                                                                     
    yield start    
    yield* range(start + step, end, step)    
}    
         
// Use Cases
console.log([...range(5)])

console.log([...range(2, 5)])

console.log([...range(2, 5, 2)])
console.log([...range(2,3)])
// You can, of course, iterate through the range instance.


0

मान लें कि आपको एक एकल चरण के साथ एक सरल श्रेणी की आवश्यकता है:

let range = (start, end)=> {
    if(start === end) return [start];
    return [start, ...range(start + 1, end)];
}

अन्य

let range = (start, end, step)=> {
    if(start === end) return [start];
    return [start, ...range(start + step, end)];
}

अधिक के लिए यहां देखें ।


0

क्या जावास्क्रिप्ट में पायथन की रेंज () के समान एक फ़ंक्शन है?

जैसा कि पहले उत्तर दिया गया: नहीं , वहाँ नहीं है। लेकिन आप अपना खुद का बना सकते हैं। मेरा मानना ​​है कि यह ES6 के लिए एक दिलचस्प दृष्टिकोण है। यह पायथन 2.7 के समान काम करता है range(), लेकिन यह बहुत अधिक गतिशील है।

function range(start, stop, step = 1) 
{
    // This will make the function behave as range(stop)
    if(arguments.length === 1)
    {
        return [...Array(arguments[0]).keys()]
    }

    // Adjusts step to go towards the stop value
    if((start > stop && !(step < 0)) ||
       (start < stop && !(step > 0)))
    {
        step *= -1
    }

    let returnArray = []
    // Checks if i is in the interval between start and stop no matter if stop
    // is lower than start or vice-versa
    for(let i = start; (i-start)*(i-stop) <= 0; i += step)
    {
        returnArray.push(i)
    }
    return returnArray
}

यह फ़ंक्शन तीन अलग-अलग तरीकों से व्यवहार कर सकता है (जैसे पायथन की रेंज ()):

  1. range(stop)
  2. range(start, stop)
  3. range(start, stop, step)

ये उदाहरण हैं:

console.log(range(5))
console.log(range(-2, 2))
console.log(range(2, -2))
console.log(range(10, 20, 2))

आपको निम्न आउटपुट देगा:

[ 0, 1, 2, 3, 4 ]
[ -2, -1, 0, 1, 2 ]
[ 2, 1, 0, -1, -2 ]
[ 10, 12, 14, 16, 18, 20 ]

ध्यान दें कि inऑपरेटर (जैसे अजगर) के साथ सरणी पर पुनरावृति करने के बजाय , आपको उपयोग करना होगा of। इस प्रकार iचर मान को ग्रहण करता है, और सरणी के तत्व का सूचकांक नहीं।

for(let i of range(5))
{
    // do something with i...
}

0

NodeJs के लिए एक विकल्प बफर का उपयोग करना है:

[...Buffer.alloc(5).keys()]
// [ 0, 1, 2, 3, 4 ]

क्या अच्छा है कि आप सीधे बफर पर पुनरावृति कर सकते हैं:

Buffer.alloc(5).forEach((_, index) => console.log(index))
// 0
// 1
// 2
// 3
// 4

आप एक असिंचित एरे के साथ ऐसा नहीं कर सकते:

Array(5).forEach((_, index) => console.log(index))
// undefined

लेकिन, इस तरह से एक उद्देश्य के लिए कौन अपने सही दिमाग का उपयोग करता है;)


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.