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


मैं तत्वों की एक सरणी के माध्यम से फिर से कोशिश कर रहा हूँ jQuery के प्रलेखन कहते हैं:

jquery.Each () दस्तावेज़ीकरण

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

मैंने 'वापसी गैर-झूठे फोन' करने की कोशिश की है; और 'गैर-झूठे;' (बिना रिटर्न) न तो आगे चलकर चलना होगा। इसके बजाय, वे लूप तोड़ते हैं। मैं क्या खो रहा हूँ?




Answers


गैर-झूठे द्वारा उनका क्या अर्थ है:

return true;

तो यह कोड:

var arr = [ "one", "two", "three", "four", "five" ];
$.each(arr, function(i) {
    if(arr[i] == 'three') {
        return true;
    }
    alert(arr[i]);
});

एक, दो, चार, पाँच




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




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

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

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

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

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

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

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

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

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




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

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

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

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



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

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



लूप केवल तभी टूट जाता है जब आप वाकई 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
});

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