2009-10-24 16 views
6

स्विच मामलों आमतौर पर की तरहjquery स्विच मामलों में श्रेणियों का उपयोग कर?

Monday: 
Tuesday: 
Wednesday: 
etc. 

मैं पर्वतमाला का उपयोग करना चाहते हैं।

from 1-12: 
from 13-19: 
from 20-21: 
from 22-30: 

क्या यह संभव है? मैं रास्ते में जावास्क्रिप्ट/jquery का उपयोग कर रहा हूँ।

+0

संभावित डुप्लिकेट [मैं जावास्क्रिप्ट का उपयोग कर स्विच केस स्टेटमेंट में श्रेणियों का उपयोग कैसे कर सकता हूं?] (Http://stackoverflow.com/questions/17145723/how-can-i-use-ranges-in-a-switch- केस-कथन-उपयोग-जावास्क्रिप्ट) – Helen

उत्तर

14

आप

या आप इस

function checkRange(x, n, m) { 
    if (x >= n && x <= m) { return x; } 
    else { return !x; } 
} 

var x = 5; 
switch (x) { 
    case checkRange(x, 1, 12): 
     //do something 
     break; 
    case checkRange(x, 13, 19): 
    ... 
} 

यह आप हो जाता है की कोशिश कर सकते व्यवहार

var x = 5; 
switch (x) { 
    case 1: case 2: case 3: case 4: ... 
     break; 
    case 13: case 14: case 15: ... 
     break; 
    ... 
} 

जो बहुत वर्बोज़ है के माध्यम से स्विच गिरावट कोस की कोशिश कर सकते वह व्यवहार जो आप चाहते हैं। चेकरेंज के अलावा !x लौटने का कारण स्विच स्टेटमेंट में undefined पास करने की समस्या को रोकने के लिए है। यदि आपका फ़ंक्शन undefined (जैसा कि jdk का उदाहरण करता है) देता है और आप स्विच में undefined पास करते हैं, तो पहला मामला निष्पादित किया जाएगा। !x समानता के किसी भी परीक्षण के तहत x के बराबर नहीं है, इस प्रकार स्विच स्टेटमेंट किस मामले को निष्पादित करता है चुनता है।

0

नहीं, यदि श्रृंखला करने के लिए आपको एक if/else का उपयोग करने की आवश्यकता है। जावास्क्रिप्ट यह कल्पना नहीं है। (कई नहीं भाषाएं हैं।)

1

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

<script> 

// Custom Checking Function.. 
function inRangeInclusive(start, end, value) { 
    if (value <= end && value >= start) 
     return value; // return given value 
    return undefined; 
} 

// CODE TO TEST FUNCTION 
var num = 3; 
switch(num) { 
case undefined: 
    //do something with this 'special' value returned by the inRangeInclusive(..) fn 
    break; 
case inRangeInclusive(1, 10, num): 
    alert('in range'); 
    break; 
default: 
    alert('not in range'); 
    break; 
} 

</script> 

यह Google क्रोम में काम करता है। मैंने अन्य ब्राउज़रों का परीक्षण नहीं किया।

+1

क्या यह काम करता है यदि संख्या अपरिभाषित है? – barkmadley

+0

यह संख्या के रूप में अपेक्षित काम नहीं करता है अगर num अपरिभाषित है। –

+0

@ बार्कामाडली: मैंने अभी कोड संपादित किया है और अपरिभाषित मूल्य के लिए एक मामला स्पष्ट रूप से इसे संभालने के लिए जोड़ा है। InRangeInclusive (..) फ़ंक्शन में उपयोग करने के लिए एक बेहतर वापसी मूल्य हो सकता है। सुझावों के लिए खोलें। धन्यवाद। –

7

पार्टी के लिए देर हो चुकी है, लेकिन एक ही प्रश्न के उत्तर की तलाश करने पर, मैं इस धागे में आया। वर्तमान में मैं वास्तव में एक स्विच का उपयोग करता हूं, लेकिन एक अलग तरीका है। उदाहरण के लिए:

switch(true) { 
    case (x >= 1 && x <= 12): 
     //do some stuff 
     break; 
    case (x >= 13 && x <= 19): 
     //do some other stuff     
     break; 
    default: 
     //do default stuff 
     break; 
} 

मुझे आईएफ स्टेटमेंट्स के समूह से पढ़ने के लिए यह बहुत आसान लगता है।

+0

आप इसे जावास्क्रिप्ट में ऐसा नहीं कर सकते हैं, यह अभिव्यक्तियों का मूल्यांकन नहीं करेगा। – zuallauz

+0

सुनिश्चित नहीं है कि आपका क्या मतलब है - यह उस परीक्षण के मामले में ठीक है जो मैंने इसे फेंक दिया है। – stephennmcdonald

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