2012-10-09 13 views
65

और ++i के अलावा जावास्क्रिप्ट में for लूप बढ़ाने के अन्य तरीके हैं? उदाहरण के लिए, मैं एक के बजाय 3 से बढ़ाना चाहता हूं।एक से अधिक द्वारा लूप वृद्धि/कमी के लिए एक कर सकते हैं?

for (var i = 0; i < myVar.length; i+3) { 
    //every three 
} 
+4

नहीं कर सकते तो आप सिर्फ तीसरा तर्क के लिए मैं स्थानापन्न = मैं + 3? या वह केवल जावा में है? – CptJesus

+1

हां ठीक है 'i ++' और '++ i' लूप घोषणा में उपयोग किए जाने पर' i + = 1' की तरह हैं, इसलिए 'i + = 3' काम करेगा। – elclanrs

+1

ए 'फॉर लूप कुछ भी नहीं बढ़ाता है। आपका कोड 'के लिए' कथन में उपयोग किया जाता है। यह पूरी तरह से आप पर निर्भर करता है कि/i/कहां/जब आप उस मामले के लिए 'i' या किसी अन्य चर को संशोधित करना चाहते हैं। –

उत्तर

144

उपयोग +=assignment operator:

for (var i = 0; i < myVar.length; i += 3) { 

तकनीकी तौर पर, आप किसी भी अभिव्यक्ति आप पाश के लिए के अंतिम अभिव्यक्ति में करना चाहते हैं जगह कर सकते हैं, लेकिन यह आम तौर पर काउंटर चर अद्यतन करने के लिए प्रयोग किया जाता है।

लूप के प्रत्येक चरण, check out the MDN article के बारे में अधिक जानकारी के लिए।

+0

विवरण के लिए धन्यवाद - मुझे पूरा यकीन था कि तीसरे स्लॉट में और अधिक उन्नत अभिव्यक्तियों को रखने का एक तरीका था - मैं बस भूल गया था कि इसे चर परिभाषित करने की आवश्यकता है, इसलिए स्पष्ट रूप से 'i + 3' काम नहीं करता है। – brentonstrine

+0

@ ब्रेंटनस्ट्रिन: कोई समस्या नहीं, खुशी है कि मैं –

7
for (var i = 0; i < 10; i=i+2) { 
     // code here 
    }​ 
+0

या '(var i = 0; i <10; i + = 2)' में मदद कर सकता हूं, क्योंकि 'i = i + 2'' i + = 2' के बराबर है – arximughal

7

एक for पाश:

for(INIT; TEST; ADVANCE) { 
    BODY 
} 

मतलब निम्नलिखित:

INIT; 
while (true) { 
    if (!TEST) 
     break; 
    BODY; 
    ADVANCE; 
} 

आप के लिए INIT, TEST, ADVANCE, और BODY लगभग किसी भी अभिव्यक्ति लिख सकते हैं।

ध्यान दें कि ++ ऑपरेटरों और वेरिएंट दुष्प्रभाव के साथ ऑपरेटरों (एक अगर तुम उन्हें i+=1 की तरह उपयोग नहीं कर रहे और इस तरह से बचने की कोशिश करनी चाहिए) कर रहे हैं:

  • ++i मतलब है i+=1; return i
  • i++ मतलब है oldI=i; i+=1; return oldI

उदाहरण:

> i=0 
> [i++, i, ++i, i, i--, i, --i, i] 
[0, 1, 2, 2, 2, 1, 0, 0] 
5

एंड्रयू व्हिटकर का जवाब सच है, लेकिन आप किसी भी हिस्से के लिए किसी भी अभिव्यक्ति का उपयोग कर सकते हैं।
बस याद रखें कि दूसरी (मध्यम) अभिव्यक्ति का मूल्यांकन करना चाहिए ताकि इसकी तुलना एक बूलियन true या false से की जा सके।

जब मैं एक for loop उपयोग करते हैं, मैं इसके बारे में

for (var i = 0; i < 10; ++i) { 
    /* expression */ 
} 

के रूप में किया जा रहा है

var i = 0; 
while(i < 10) { 
    /* expression */ 
    ++i; 
} 
1

आप निश्चित रूप से कर सकते हैं लगता है। अन्य ने सही ढंग से बताया है कि आपको i += 3 करने की आवश्यकता है। आप जो भी पोस्ट कर चुके हैं वह नहीं कर सकते हैं क्योंकि आप यहां जो भी कर रहे हैं वह i + 3 जोड़ रहा है लेकिन परिणाम को कभी भी i पर असाइन नहीं कर रहा है। i++i = i + 1 के लिए सिर्फ एक शॉर्टेंड है, इसी प्रकार i +=3i = i + 3 के लिए एक शॉर्टेंड है।

0
for (var i = 0; i < myVar.length; i+=3) { 
    //every three 
} 

अतिरिक्त

Operator Example Same As 
    ++  X ++  x = x + 1 
    --  X --  x = x - 1 
    +=  x += y  x = x + y 
    -=  x -= y  x = x - y 
    *=  x *= y  x = x * y 
    /=  x /= y  x = x/y 
    %=  x %= y  x = x % y 
संबंधित मुद्दे

 संबंधित मुद्दे