প্রতিটি লুপটি কীভাবে জিকুয়ারি ভাঙবেন


675

আমি কীভাবে একটি জিকুয়ের eachলুপটি ভাঙ্গতে পারি ?

আমি চেষ্টা করেছি:

 return false;

লুপে কিন্তু এটি কার্যকর হয়নি। কোন ধারনা?


11
উত্তরোত্তর জন্য: প্রশ্নকারী কেন বলেছেন মিথ্যা ফিরিয়ে দেওয়া কাজ করে না? কার্যত প্রতিটি উত্তর তা করতে বলে। ভাবছেন যদি এটি সম্ভবত হয় কারণ এটি কেবল প্রতিটি লুপটি শেষ করে। বিপরীতে, একটি লুপের ভিতরে একটি রিটার্ন স্টেটমেন্ট লুপ এবং কলিং ফাংশন থেকে প্রস্থান করবে । প্রতিটি লুপ থেকে এই জাতীয় কঠোর আচরণ পেতে, আপনাকে প্রতিটি লুপের অভ্যন্তরে ক্লোজার-স্কোপ সহ একটি পতাকা স্থাপন করতে হবে, তারপরে পতাকাটির প্রতিক্রিয়া জানাতে হবে।
বব স্টেইন

8
@ ববস্টাইন-ভিসিবিউন কেউ আমার মূল মন্তব্য মুছে ফেলেছে। আমি 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
ধন্যবাদ আমি যা খুঁজছিলাম, ধন্যবাদ। @ ওজজিআই, কেবল "সত্য প্রত্যাবর্তন করুন" ব্যবহার করুন বা "মিথ্যা প্রত্যাবর্তন;" আপনার অবস্থার উপর ভিত্তি করে।
chayচাইকা

2
" falseলুপ কলব্যাক ফেরত" দিয়ে সিএমএসের অর্থ কী ? এটা ঠিক কোথায়?
মেসকেব

উদাহরণস্বরূপ$.each(array, function(key, value) { if(value == "foo") return false; });
স্টিভএডসন

1
জানেন না যে jQuery এর প্রতিটি জাভাস্ক্রিপ্ট থেকে প্যারামিটারের অবস্থানগুলি অদলবদল করতে হয়েছিল।
মাইকী

1
@ অ্যালেক্সআর ব্রেকিং $().eachঠিক একইভাবে সম্পন্ন করা হয়েছে, আপনার সম্পাদনাটি কেবল বিভ্রান্তি সৃষ্টি করে।
জেক

57

ডকুমেন্টেশন অনুযায়ী return false;কাজ করা উচিত।

আমরা কলব্যাক ফাংশনটিকে মিথ্যা বানিয়ে $ .Ech () লুপটি ভেঙে ফেলতে পারি।

কলব্যাকে মিথ্যা ফিরুন:

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

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

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

বিটিডব্লিউ, এইভাবে continueকাজ করে:

অ-মিথ্যা প্রত্যাবর্তন করা লুপের জন্য একটি চালিয়ে যাওয়া বিবৃতি হিসাবে একই; এটি পরের পুনরাবৃত্তিতে অবিলম্বে এড়িয়ে যাবে।


35

আমি এই প্রশ্নের উত্তরের জন্য একটি ফিডল তৈরি করেছি কারণ গৃহীত উত্তরটি ভুল এবং এটি এই প্রশ্ন সম্পর্কিত গুগল থেকে ফিরে আসা প্রথম স্ট্যাকওভারফ্লো থ্রেড।

একটি break .আউট থেকে বিরতি জন্য আপনি অবশ্যই ব্যবহার করা উচিত return false;

এখানে একটি ফিডল প্রমাণ করছে:

http://jsfiddle.net/9XqRy/


14
আমার কাছে গলদা পছন্দ, তবে আপনি কেন গ্রহণযোগ্য উত্তর ভুল বলেছিলেন তা নিশ্চিত নই, কারণ আপনি দু'জনেই একই কথা বলছেন।
gitsitgo

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 সাধারণ উদাহরণ দিয়ে ব্যাখ্যা করতে চাই:

১. উদাহরণ: এই ক্ষেত্রে, আমাদের একটি সাধারণ পুনরাবৃত্তি রয়েছে এবং আমরা তিনটি সন্ধান করতে পারলে সত্যের সাথে প্রত্যাবর্তন করতে চাই।

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;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.