2013-09-06 8 views
75

node.js में कोड पर्याप्त सरल है।प्रत्येक लूप के अंदर 'जारी रखें' कैसे करें: अंडरस्कोर, node.js

_.each(users, function(u, index) { 
    if (u.superUser === false) { 
    //return false would break 
    //continue? 
    } 
    //Some code 
}); 

मेरे सवाल यह है कि मैं "कुछ कोड" को क्रियान्वित करता है, तो SuperUser गलत पर सेट है बिना अगले सूचकांक करने के लिए जारी कर सकते हैं?

पीएस: मुझे पता है कि एक और स्थिति समस्या का समाधान करेगी। जवाब जानने के लिए अभी भी उत्सुक है।

उत्तर

126
_.each(users, function(u, index) { 
    if (u.superUser === false) { 
    return; 
    //this does not break. _.each will always run 
    //the iterator function for the entire array 
    //return value from the iterator is ignored 
    } 
    //Some code 
}); 

साइड ध्यान दें कि lodash साथ (रेखांकित नहीं) _.forEach यदि आप "लूप" समाप्त करने के लिए जल्दी आप स्पष्ट रूप से return false iteratee समारोह और lodash से जल्दी forEach पाश को समाप्त कर देगा कर सकते हैं करते हैं।

+0

यह लागू क्यों नहीं है? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue –

+6

क्योंकि '_.each' और नियमित '() {}' लूप एक ही चीज़ नहीं है। –

+0

@ConAntonakos जब आप जेएस में 'प्रत्येक के लिए' संग्रह (कॉलबैक) 'का उपयोग करते हैं तो' कॉलबैक 'के अंदर लूप के लिए कोई भी नहीं है इसलिए' ब्रेक/जारी रखें 'लागू नहीं होता है। –

0
_.each(users, function(u, index) { 
    if (u.superUser) { 
    //Some code 
    } 
}); 
+0

क्षमा करें। मुझे परिदृश्य को विस्तार से रखना चाहिए था। यदि सुपर उपयोगकर्ता गलत है और फिर जारी रखें तो मुझे कुछ कोड निष्पादित करने की आवश्यकता है। एक और शर्त कहेंगी, अगर (superUser! = False && सक्रिय) जिसके लिए मुझे कुछ और करने की आवश्यकता है और "कुछ कोड" निष्पादित करना है और फिर ऐसा कुछ है जिसके लिए मुझे "कुछ कोड" निष्पादित करने की आवश्यकता है। मैं सिर्फ यह जानना चाहता था कि अगर अन्यथा एक ही कोड को दोबारा लिखने के बिना ऐसा करने का कोई तरीका है या नहीं। मैं इसके लिए एक और काम नहीं बनाना चाहता हूं। – nightgaunt

+1

वह पूछ रहा था कि तीर-कोड के उस बहुत खराब अभ्यास से कैसे बचें। –

8

लूप के लिए continue कथन के बजाय आप अंडरस्कोर.जेएस में _.each() में return कथन का उपयोग कर सकते हैं, यह केवल वर्तमान पुनरावृत्ति को छोड़ देगा।

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