प्रत्येक लूप के अंदर 'जारी' कैसे करें: अंडरस्कोर, नोड। जेएस


80

नोड.जेएस में कोड काफी सरल है।

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

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

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

जवाबों:


137
_.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
});

ध्यान दें कि _.forEachयदि आप "लूप" को जल्द समाप्त करना चाहते हैं तो लॉश (अंडरस्कोर नहीं) के साथ आप स्पष्ट रूप return falseसे पुनरावृति फ़ंक्शन से ले सकते हैं और लॉश forEachजल्दी लूप को समाप्त कर देंगे ।



6
क्योंकि _.eachऔर एक नियमित for () {}लूप एक ही बात नहीं है।
पीटर लियोन

@ConAntonakos जब आप for-each(collection, callback)JS में उपयोग करते हैं तो लूप के लिए कोई भी अंदर नहीं होता है callbackइसलिए break/continueलागू न करें।
pgpb.padilla

12

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


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

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

1
वह पूछ रहा था कि तीर-संहिता के उस बहुत खराब अभ्यास से कैसे बचा जाए।
डेविड बेटज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.