JQuery.each () उपयोग में अगले पुनरावृत्ति पर कैसे जाएं?


434

मैं तत्वों की एक सरणी के माध्यम से पुनरावृति करने की कोशिश कर रहा हूं। jQuery के दस्तावेज़ कहते हैं:

jquery.Each () प्रलेखन

गैर-झूठी लौटना एक लूप के लिए जारी बयान के समान है, यह तुरंत अगले पुनरावृत्ति पर छोड़ देगा।

मैंने 'रिटर्न नॉन-झूठ ’कहने की कोशिश की है; और 'गैर-झूठ?' (sans वापसी) जिसमें से कोई भी अगले पुनरावृत्ति पर न जाए। इसके बजाय, वे लूप को तोड़ते हैं। मैं क्या खो रहा हूँ?


9
उनके असीम ज्ञान में, jQuery पर बॉड्स ने अब इस नोट को प्रलेखन से हटा दिया है - या कम से कम, यह प्रत्येक के लिए पृष्ठ में नहीं है () । इसलिए मुझे यह देखकर बहुत खुशी हुई कि अभी भी SO पर, और Google पर विस्तार से यहां पाया जा सकता है, क्योंकि यह उन सरल चीजों में से एक है जिन्हें मैं हमेशा भूल जाता हूं :)
डौग मैकलीन

जवाबों:


783

गैर-झूठ से उनका क्या मतलब है:

return true;

तो यह कोड:

var arr = ["one", "two", "three", "four", "five"];
$.each(arr, function(i) {
  if (arr[i] == 'three') {
    return true;
  }
  console.log(arr[i]);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

प्रवेश करेंगे one, two, four, five


16
केवल वर्तमान पुनरावृत्ति से बाहर निकलने के लिए यह केवल 'वापसी' वापस करने के लिए पर्याप्त है। और सभी पुनरावृत्तियों से बाहर निकलने के लिए झूठी वापसी करें।
सौलियस

7
यह कहने लायक है कि यह काम करता है क्योंकि आप एक फ़ंक्शन के भीतर हैं जब यह कोड निष्पादित होता है।
उकेसर 32

जब मैं वापसी (गिरफ्तारी [i] === 'तीन'); यह काम क्यों नहीं कर रहा है ??
अज्वय

मेरे लिए, असत्य का अर्थ है, तुम असत्य को छोड़कर कुछ भी वापस कर सकते हो;
होआंग ट्रुंग

61

By गैर-असत्य ’लौटाए जाने से उनका मतलब किसी भी मूल्य को वापस करना है जो बूलियन के लिए गलत काम नहीं करेगा। तो तुम लौट सकते हैं true, 1, 'non-false', या जो कुछ भी आप सोच सकते हैं।


20
क्यों न केवल खोज के लिए "वापसी 'जारी रहे?"
अलेक्जेंडर मिल्स

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

@ ब्रैंडिटो यह एक सामान्य लूप की तरह नहीं चल रहा है - यह एक फ़ंक्शन को पुनरावर्ती रूप से बुला रहा है, इसलिए लूप के लिए आपको फ़ंक्शन के अंदर प्रसंस्करण को समाप्त करने की आवश्यकता है।
टीजे एल

5

जावास्क्रिप्ट प्रकार में 'सत्यता' और 'मिथ्यात्व' का विचार है। यदि एक चर का मान है, तो आम तौर पर 9as आप देखेंगे) इसकी 'सत्यता' है - अशक्त, या कोई मूल्य 'मिथ्यात्व' की ओर नहीं जाता है। नीचे दिए गए स्निपेट मदद कर सकते हैं:

var temp1; 
if ( temp1 )...  // false

var temp2 = true;
if ( temp2 )...  // true

var temp3 = "";
if ( temp3 ).... // false

var temp4 = "hello world";
if ( temp4 )...  // true

उम्मीद है कि मदद करता है?

इसके अलावा, डगलस क्रॉकफोर्ड के इन वीडियो को देखने लायक है

अद्यतन: टूटे हुए लिंक को खोलने के लिए धन्यवाद @cphpython - मैंने अब काम कर रहे संस्करणों पर इंगित करने के लिए अपडेट किया है

जावास्क्रिप्ट भाषा

जावास्क्रिप्ट - अच्छा भाग


1
लिंक टूटे हुए हैं ... Btw, 0एक मिथ्या मूल्य भी है और इसका निषेध सत्य है (और इसके विपरीत किसी भी अन्य संख्या, जैसे !-42 === false)।
CPHPython

4

मत भूलो कि आप कभी-कभी अगले पुनरावृत्ति को प्राप्त करने के लिए ब्लॉक के अंत में गिर सकते हैं:

$(".row").each( function() {
    if ( ! leaveTheLoop ) {
        ... do stuff here ...
    }
});

वास्तव में इस तरह से लौटने के बजाय:

$(".row").each( function() {
    if ( leaveTheLoop ) 
        return; //go to next iteration in .each()
    ... do stuff here ...
});

3
मैं असभ्य होने का मतलब नहीं है, लेकिन यह दर्दनाक भयानक डिजाइन है। मेरा मतलब है ... मैंने इसे किया है, मेरे 2 कॉलेज के पहले वर्षों में, जब मुझे बेहतर नहीं पता था (तब भी मुझे यह पसंद नहीं था), लेकिन यह ऐसा कुछ नहीं है जिसे सलाह दी जानी चाहिए ...
xDaizu

@ DanielParejoMuñoz, मैं आपको सुनता हूं, लेकिन हम असहमत हैं। रिटर्न स्टेटमेंट न रखने का विकल्प शायद आपको पसंद न आए। लेकिन मुझे लगता है कि यह एक अच्छी / बुरी चीज के बजाय एक पसंद / नापसंद चीज़ है। न ही स्पष्ट रूप से स्पष्ट फायदे हैं।
ली मीडोर

4
इससे घोंसले के बढ़ने का नुकसान होता है
डेव कजिनो

3

यदि आप शाब्दिक रूप से लौटते हैं तो पाश केवल टूट जाता है false। उदाहरण के लिए:

// this is how jquery calls your function
// notice hard comparison (===) against false
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
   break;
}

इसका मतलब है कि आप कुछ और भी वापस कर सकते हैं, जिसमें शामिल है undefined, जो कि अगर आप कुछ भी नहीं लौटाते हैं, तो आप बस एक खाली रिटर्न स्टेटमेंट का उपयोग कर सकते हैं:

$.each(collection, function (index, item) {
   if (!someTestCondition)
      return; // go to next iteration

   // otherwise do something
});

यह संभव है कि यह संस्करण द्वारा भिन्न हो सकता है; यह १.१२.४ के लिए लागू होता है। लेकिन वास्तव में, जब आप फ़ंक्शन के नीचे से बाहर निकलते हैं, तो आप कुछ भी नहीं लौटा रहे हैं, और यही कारण है कि लूप जारी है, इसलिए मैं उम्मीद करूंगा कि जो भी हो, जो कुछ भी नहीं लौटाता है वह लूप को जारी नहीं रख सकता है । जब तक कि वे पाश को जारी रखने के लिए कुछ लौटने शुरू करने के लिए हर किसी के लिए मजबूर करना चाहते हैं, कुछ भी नहीं लौटने है यह जा रहा रखने के लिए एक तरह से किया जाना है।


-3

jQuery.noop () मदद कर सकता है

$(".row").each( function() {
    if (skipIteration) {
        $.noop()
    }
    else{doSomething}
});

नहीं, यह noop () फ़ंक्शन किसी भी तरह से मदद नहीं करता है। यह केवल इसलिए काम करता है क्योंकि "और" ब्लॉक सक्रिय नहीं है।
रौनी लिलेमेट्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.