2016-01-20 5 views
6

मैं "स्विच" कथन लिखने की कोशिश कर रहा हूं लेकिन मैंने सख्ती से परिभाषित मामला है और मैं जितना छोटा कोड कर सकता हूं उतना ही उपयोग करना चाहता हूं। तो जैसा कि मैं सोच रहा था कि यह कैसे एक सोचा मेरे मन में आया, यह जोड़ना संभव है "अगर" "स्विच" में बयान इसलिए यदि इस "अगर" बयान के अधिक मामलों को जोड़ने के लिए सच है मेरी "स्विच"। उदाहरण के लिए:क्या मैं किसी भी तरह से अधिक मामलों को जोड़ने के लिए स्विच में कथन का उपयोग कर सकता हूं?

switch(myVar) { 
    case 1: 
     return 'Your variable is 1'; 
    case 2: 
     return 'Your variable is 2'; 
    if(yourVar && yourVar === true) { 
     case 3: return 'Your variable is 3'; 
    } 
    default: return 0; 
} 

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

+0

क्या आप अंत में अपने 'स्विच (myVar) को बंद करता है, तो' 'case2' के बाद किसी अन्य 'स्विच' को परिभाषित करने के लिए गीलेर का निर्णय लेने के लिए अगर कथन का उपयोग करें या नहीं? – sinaza

+1

नहीं, यह संभव नहीं है। विशेष नियमों के साथ डिफ़ॉल्ट रूप से उनको पकड़ें और फिर शर्तों का उपयोग करें। –

+0

भविष्य के उपयोगकर्ताओं के बारे में जानने के लिए, यह अच्छा होगा यदि आप उस उत्तर को स्वीकार करते हैं जो आपके मूल प्रश्न को सबसे अच्छा हल करता है, क्योंकि यह एक बुरा सवाल नहीं है, भले ही आपको अपना प्रारंभिक कोड पुनर्निर्माण करके एक और तरीका मिल जाए। – LGSon

उत्तर

1

आप इस

function test(myVar, yourVar) { 
 

 
    switch(myVar) { 
 
    case 1: return '1'; 
 
    case 2: return '2'; 
 

 
    default: 
 
     // as requested in a comment, add yourVar to myVar 
 
     if(myVar != undefined && yourVar != undefined) return myVar + yourVar; 
 

 
     return '0'; 
 
    } 
 
} 
 

 
alert(test(2)); 
 
alert(test(3)); 
 
alert(test(3,5)); 
 
alert(test(3,0));

+0

यह वास्तव में इसके साथ काम कर सकता है लेकिन मुझे यकीन नहीं है कि यह सबसे अच्छा तरीका है या नहीं। फिर भी, आपके सुझाव के लिए धन्यवाद, मैं इसे मानता हूं। –

+0

आपका सुझाव मेरे लिए काम नहीं करेगा क्योंकि यह एक वेबसाइट पर मुझे आकर्षित करना चाहिए। अधिक विशिष्ट, यदि "yourVar === true" की स्थिति है, तो मुझे वेबसाइट में ड्रॉपवॉउन आकर्षित करना चाहिए, जिसमें तत्वों की myVar + yourVar संख्या है, यदि यह गलत है तो मुझे "yourVar" तत्व नहीं खींचना चाहिए। मुझे खेद है अगर मैं पर्याप्त स्पष्ट नहीं हूं। –

+0

@ जॉर्जस्पंडूरोव मैंने अपना पहला नमूना अपडेट किया। क्या यह तर्क आपके लिए काम करता है? – LGSon

2

हो सकता है कि आप अपने तर्क थोड़ा ले जाने के कर सकता है। आप break कथन को छोड़ सकते हैं, क्योंकि आप return के साथ फ़ंक्शन समाप्त करते हैं।

switch(true) { 
    case myVar === 1: 
     return 'Your variable is 1'; 
    case myVar === 2: 
     return 'Your variable is 2'; 
    case yourVar: 
     return 'Your variable is 3'; 
    default: 
     return 0; 
} 
+1

खैर, असल में मेरे असली प्रोजेक्ट कोड में कोई ब्रेक नहीं है जिसे मैंने गलती से यहां रखा है (अब मैं इसे ठीक कर दूंगा)। आपके सुझाव के बारे में मैं इसके बारे में सोचूंगा और देख सकता हूं कि मैं इसे अपने मामले में उपयोग करने में सक्षम हूं या नहीं। –

+0

बस कुछ जोड़ने के लिए, वास्तव में मेरी परियोजना में मुझे मूल्य की जांच करनी पड़ी और नहीं, अगर यह सच है या गलत है तो आपका सुझाव मेरी मदद नहीं कर सका। –

+0

तुलना प्राथमिक और स्विच के बीच प्राथमिक नहीं है, लेकिन पहले मामले में और फिर सही (स्विच) के साथ, तो आप मामले की जगह पर तुलना कर सकते हैं और इसकी तुलना स्विच स्थान से कर सकते हैं। यदि आप कुछ वास्तविक समस्या जोड़ते हैं तो शायद यह बेहतर होगा। –

2

मामले के अंदर परीक्षण ले जाएँ, और चले जाते हैं यह विफल रहता है:

switch(myVar) { 
    case 1: 
    return 'Your variable is 1'; 
    case 2: 
    return 'Your variable is 2'; 
    case 3: 
    if (yourVar) return 'Your variable is 3'; 
    /* fall through */ 
    default: 
    return 0; 
} 
0

switch(myVar) { 
 
    case 1: 
 
     return 'Your variable is 1'; 
 
    case 2: 
 
     return 'Your variable is 2'; 
 
    case 3: 
 
     if(yourVar && yourVar === true) { 
 
     return 'Your variable is 3'; 
 
     }else{ 
 
     return 0: 
 
     } 
 
    default: return 0; 
 
}

संबंधित मुद्दे

 संबंधित मुद्दे