प्रत्येक लूप को jQuery से बाहर कैसे करें


675

मैं एक jQuery eachलूप से कैसे टूट सकता हूं ?

मैंने कोशिश की है:

 return false;

पाश में लेकिन यह काम नहीं किया। कोई विचार?


11
पश्चाताप के लिए: प्रश्नकर्ता ने यह क्यों कहा कि झूठे काम करने से काम नहीं चलता है? वस्तुतः हर उत्तर ऐसा करने के लिए कहता है। आश्चर्य है कि अगर यह संभवतः था क्योंकि केवल प्रत्येक लूप को समाप्त करता है। इसके विपरीत, एक लूप के अंदर रिटर्न स्टेटमेंट, लूप और कॉलिंग फ़ंक्शन से बाहर निकल जाएगा । प्रत्येक लूप से इस तरह के कठोर व्यवहार को प्राप्त करने के लिए, आपको प्रत्येक लूप के अंदर क्लोजर-स्कोप के साथ एक फ्लैग सेट करना होगा, फिर उसके बाहर लगे फ्लैग का जवाब दें।
बॉब स्टीन

8
@ BobStein-VisiBone किसी ने मेरी मूल टिप्पणी हटा दी है। मैंने return falseगलत जगह पर डाल दिया । जब मैंने इसे ठीक किया तो सब कुछ काम कर गया।
ल्यूक101

1
सुनिश्चित नहीं है कि "अपडेट" क्यों कहता return falseहै $().each- क्योंकि यह काम नहीं करता है।
बिलिन्नाह

2
@ ल्यूक101 को आपको यह स्पष्ट करने के लिए प्रश्न को अपडेट करना चाहिए कि क्या काम नहीं कर रहा था। यह प्रश्न / ए का कोई मतलब नहीं है जब आपका प्रश्न कहता है कि स्वीकृत उत्तर काम नहीं करता है।
xr280xr

जवाबों:


1178

करने के लिए breakएक $.eachया $(selector).eachपाश, आप वापस लौटाना होगा falseपाश कॉलबैक में।

एक सामान्य लूप में ए के trueबराबर, अगले पुनरावृत्ति में स्कीपिंग लौटाता है continue

$.each(array, function(key, value) { 
    if(value === "foo") {
        return false; // breaks
    }
});

// or

$(selector).each(function() {
  if (condition) {
    return false;
  }
});

3
बस मैं जो चाह रहा था, धन्यवाद। @OZZIE, बस "वापसी सच?" का उपयोग करें या "झूठे लौटें?" आपकी शर्तों के आधार पर।
ढाका

2
" falseपाश कॉलबैक में वापसी" के साथ @CMS का क्या अर्थ है ? वास्तव में यह कहां है?
मेसकाइब

जैसे$.each(array, function(key, value) { if(value == "foo") return false; });
स्टीवसन

1
पता नहीं jQuery के जावास्क्रिप्ट फॉर्च्यून से पैरामीटर पदों को स्वैप करना था।
मिकी

1
@AlexR का तोड़ना $().eachठीक उसी तरह से किया जाता है, आपका संपादन केवल भ्रम पैदा करने का काम करता है।
जेक

57

प्रलेखन के अनुसार return false;काम करना चाहिए।

हम कॉलबैक फ़ंक्शन रिटर्न को झूठा बनाकर $ .each () लूप [..] को तोड़ सकते हैं।

कॉलबैक में गलत लौटें:

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

  this; // == valueOfElement (casted to Object)

  return booleanKeepGoing; // optional, unless false 
                           // and want to stop looping
}

BTW, continueइस तरह काम करता है:

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


35

मैंने इस प्रश्न के उत्तर के लिए एक फिडेल बनाया क्योंकि स्वीकृत उत्तर गलत है और यह पहला स्टैकऑवरफ्लो धागा है, जो इस प्रश्न के संबंध में Google से दिया गया है।

$ .Each से बाहर तोड़ने के लिए आपको उपयोग करना होगा return false;

यहाँ एक बेला यह साबित कर रहा है:

http://jsfiddle.net/9XqRy/


14
मुझे यह पसंद है, लेकिन मुझे यकीन नहीं है कि आप क्यों कहते हैं कि स्वीकृत उत्तर गलत है, क्योंकि आप दोनों एक ही बात कह रहे हैं।
बजे

34

मैं उस स्थिति में आया था जहां मुझे एक शर्त मिली थी कि लूप को तोड़ दिया जाए, हालांकि .each () फ़ंक्शन के बाद का कोड अभी भी निष्पादित किया गया है। फिर मैंने .each () फ़ंक्शन के बाद कोड को सुनिश्चित करने के लिए एक सच्चे चेक के साथ "ट्रू" करने के लिए एक ध्वज सेट किया जिसके बाद निष्पादित नहीं किया गया था।

$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
} 

7

"प्रत्येक" कॉलबैक फ़ंक्शन का उपयोग करता है। कॉलबैक फ़ंक्शन कॉलिंग फ़ंक्शन की परवाह किए बिना निष्पादित करता है, इसलिए कॉलबैक फ़ंक्शन से कॉलिंग फ़ंक्शन पर लौटना संभव नहीं है।

लूप के लिए उपयोग करें यदि आपको कुछ स्थिति के आधार पर लूप निष्पादन को रोकना है और उसी फ़ंक्शन में रहना है।


6

मुझे इसका काफी पुराना सवाल पता है, लेकिन मुझे कोई जवाब नहीं मिला, जो स्पष्ट करता है कि क्यों और कब वापसी के साथ टूटना संभव है।

मैं इसे 2 सरल उदाहरणों के साथ समझाना चाहता हूं:

1. उदाहरण: इस मामले में, हमारे पास एक सरल पुनरावृत्ति है और हम वापसी सच के साथ तोड़ना चाहते हैं, अगर हम तीनों को पा सकते हैं।

function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return true;
        }
    }
}

यदि हम इस फ़ंक्शन को कहते हैं, तो यह केवल सही लौटाएगा।

2. उदाहरण इस मामले में, हम jquery के प्रत्येक फ़ंक्शन के साथ पुनरावृति करना चाहते हैं , जो गुमनाम फ़ंक्शन को पैरामीटर के रूप में लेता है।

function canFindThree() {

    var result = false;

    $.each([1, 2, 3, 4, 5], function(key, value) { 
        if(value === 3) {
            result = true;
            return false; //This will only exit the anonymous function and stop the iteration immediatelly.
        }
    });

    return result; //This will exit the function with return true;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.