একটি ওআর (||) এর মতো একাধিক ক্ষেত্রে স্যুইচ-এর জন্য পরীক্ষা করুন


239

আপনি switch caseযখন একই ক্ষেত্রে একটি বা বি পরীক্ষা করার দরকার পড়ে আপনি কীভাবে ব্যবহার করবেন ?

switch (pageid) {
  case "listing-page" || "home-page":
    alert("hello");
    break;
  case "details-page":
    alert("goodbye");
    break;
}


আমি কমা ব্যবহার করে প্রতিটি ক্ষেত্রে অনুমোদিত 2 টি বিকল্প পেয়েছি options
আগুস উইদিআর্সা আমি

উত্তর:


563

আপনি পড়ার মাধ্যমে ব্যবহার করতে পারেন:

switch (pageid)
{
    case "listing-page":
    case "home-page":
        alert("hello");
        break;
    case "details-page":
        alert("goodbye");
        break;
}

69
একে ফ্যাল-থ্রু বলে
ফেলিক্স ক্লিং

2
প্রশ্ন পোস্ট করার আগে আমি এটি খুঁজে পেয়েছি, তবে ভেবেছি এটি সম্প্রদায়ের পক্ষে কার্যকর হবে কারণ এটি কোথাও ভালভাবে নথিভুক্ত করা হয়নি ... আপনি উত্তর দেওয়ার জন্য ধন্যবাদ @ এসএলাক্সকে ধন্যবাদ।
আন্দ্রেস

হাই @ কেই আমি জানি এটির পক্ষে এটি সঠিক জায়গা নয় তবে আপনি আমার শেষ প্রশ্নের সঠিক উত্তর দিয়েছেন stackoverflow.com/questions/21049005/… আপনি কি আপনার উত্তরটি পুনরায় পোস্ট করতে চান?
লিওন গাবান

1
আমি পাশাপাশি বিষয়টি স্পষ্ট করে বলতে পারি: একবার কেস সত্যের সাথে মূল্যায়ন করে, এটিই। আর কোনও মামলা পরীক্ষা করা হয় না, শেষ অবধি সমস্ত বিবৃতি কার্যকর করা হয়: অর্থাত্ "ব্রেক"; নির্দেশনা বা যদি স্যুইচটি সমাপ্ত হয়।
BeauCielBleu

অন্যান্য উদাহরণ এখানে এমডিএন
ডক্সে

118

যেহেতু অন্যান্য উত্তরগুলি এটি কেন কাজ করে তা ব্যাখ্যা না করে কীভাবে এটি করতে হবে তা ব্যাখ্যা করেছে:

যখন কার্যকর হয় switch, এটি প্রথম মিলে যাওয়া caseবিবৃতিটি সন্ধান করে এবং তারপরে স্যুইচের পরে কোডের প্রতিটি লাইন সম্পাদন করে যতক্ষণ না এটি breakবিবৃতি বা শেষের switch(বা একটি returnবিবৃতি পুরোযুক্ত ফাংশনটি ছেড়ে যাওয়ার জন্য) আঘাত করে। আপনি যখন ইচ্ছাকৃতভাবে বাদ দিবেন তখন breakপরবর্তী কোডের অধীনে কোডটি caseকার্যকর হয়ে যায় যা ফলের মাধ্যমে বলা হয় । সুতরাং ওপি প্রয়োজনীয়তার জন্য:

switch (pageid) {
   case "listing-page":
   case "home-page":
      alert("hello");
      break;

   case "details-page":
      alert("goodbye");
      break;
} 

breakবিবৃতি অন্তর্ভুক্ত করা ভুলে যাওয়া মোটামুটি প্রচলিত কোডিং ভুল এবং switchআপনার প্রত্যাশার মতো কাজ না করে যদি আপনার প্রথম দেখা উচিত । সেই কারণে কিছু লোক উদ্দেশ্য ভেদে যখন ব্রেক স্টেটমেন্টগুলি বাদ দেওয়া হয়েছে তখন তা পরিষ্কার করে "ফলের মাধ্যমে" বলতে একটি মন্তব্য করতে পছন্দ করে। আমি এটি নীচের উদাহরণে এটি করি যেহেতু এটি কিছুটা জটিল এবং এটি দেখায় যে কিছু ক্ষেত্রে কীভাবে কোডগুলি কার্যকর করতে কোড অন্তর্ভুক্ত করতে পারে সেগুলি পড়ার আগে:

switch (someVar) {
   case 1:
      someFunction();
      alert("It was 1");
      // fall through
   case 2:
      alert("The 2 case");
      // fall through
   case 3:
      // fall through
   case 4:
      // fall through
   case 5:
      alert("The 5 case");
      // fall through
   case 6:
      alert("The 6 case");
      break;

   case 7:
      alert("Something else");
      break;

   case 8:
      // fall through
   default:
      alert("The end");
      break;
}

আপনি (optionচ্ছিকভাবে) একটি কেসও অন্তর্ভুক্ত করতে পারেন default, যা অন্য কোনও মামলার সাথে মেলে না তবে মৃত্যুদন্ড কার্যকর করা হবে - যদি আপনি একটি defaultএবং কোনও মামলার মিল না রাখেন তবে কিছুই ঘটে না। আপনি (allyচ্ছিকভাবে) ডিফল্ট ক্ষেত্রে যেতে পারেন।

সুতরাং আমার দ্বিতীয় উদাহরণে যদি someVarএটি 1 হয় তবে এটি কল করবে someFunction()এবং তারপরে আপনি চারটি সতর্কতা দেখতে পাবেন কারণ এর মধ্যে বেশ কয়েকটি ক্ষেত্রে সতর্কতা রয়েছে। কি someVar3, 4 অথবা 5 আপনি দুই সতর্কতা দেখতে না হয়। যদি someVar7 হয় তবে আপনি "অন্য কিছু" দেখতে পাচ্ছেন এবং যদি এটি 8 বা অন্য কোনও মান হয় তবে আপনি "শেষ" দেখতে পাবেন।


4
মন্তব্যের মাধ্যমে // ফলনের ফলে আমার পিএইচপিস্টর্ম আমাকে পতনের মাধ্যমে সুইচ স্টেটমেন্ট সম্পর্কে সতর্ক করে দিয়েছে, ধন্যবাদ :)
গেটেজ

আপনি বিরতির পরিবর্তে রিটার্ন ব্যবহার করতে পারেন যদি আপনি কোনও বস্তু ফেরত দেওয়ার জন্য স্যুইচটি কোনও ফাংশনটিতে রাখেন: স্যুইচ (অ্যাকশন.প্রকার) {কেস এডিডি: {নতুন স্টেট রিটার্ন করুন; কেস মোছা: new নতুন স্টেট ফিরে; } ডিফল্ট: {ফেরত রাষ্ট্র; }}
ডোমিনিকা

14

আপনার দুটি caseলেবেল তৈরি করতে হবে ।

নিয়ন্ত্রণটি প্রথম লেবেল থেকে দ্বিতীয়টিতে পড়বে, সুতরাং তারা উভয়ই একই কোডটি কার্যকর করবে।


9

আপনি এটি স্যুইচ করতে হবে!

switch (true) {
    case ( (pageid === "listing-page") || (pageid === ("home-page") ):
        alert("hello");
        break;
    case (pageid === "details-page"):
        alert("goodbye");
        break;
}

1
এই পদ্ধতিটি খুব উদ্ভাবনী :-) আমি এটির জন্য এটি পছন্দ করি। তবে, যেমন এটি ক্লাসিক "ফল-থ্রু" এর চেয়ে বেশি অক্ষর ব্যবহার করে, তত কম আকর্ষণীয় হয়ে যায় :)
অ্যালেক্সএলফোর্জ

1
@ অ্যালেক্সএলফোর্স সবচেয়ে অদ্ভুত এবং কৌতুকপূর্ণ যে অন্য স্ট্যাকোভারফ্লো প্রশ্নে এই ধরনের উত্তর সম্পূর্ণভাবে হ্রাস পেয়েছিল। তবে তবুও আমি এই উত্তরটিকে সমর্থন করি এবং সম্মত হই, এটি নমনীয় অবস্থার জন্য ভাল সমাধান।
অ্যালেক্সনিকনভ

3

ভুলে যান switchএবং break, সাথে খেলতে দিন if। এবং পরিবর্তে জোর দেওয়া

if(pageid === "listing-page" || pageid === "home-page")

কেসগুলি সহ বেশ কয়েকটি অ্যারে তৈরি করতে এবং এটি অ্যারে.প্রোটোটাইপ.কমডেস () দিয়ে পরীক্ষা করে দেখুন

var caseA = ["listing-page", "home-page"];
var caseB = ["details-page", "case04", "case05"];

if(caseA.includes(pageid)) {
    alert("hello");
}
else if (caseB.includes(pageid)) {
    alert("goodbye");
}
else {
    alert("there is no else case");
}

-6

কেস আলাদা করতে কমা ব্যবহার করুন

switch (pageid)
{
    case "listing-page","home-page":
        alert("hello");
        break;
    case "details-page":
        alert("goodbye");
        break;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.