2012-10-08 7 views
17

संभव डुप्लिकेट:
array.contains(obj) in JavaScriptमैं स्ट्रिंग की तुलना कई मूल्यों से कैसे कर सकता हूं?

कुछ की तरह:

if (mystring == "a" || mystring == "b" || mystring =="c") 

मुझे क्या करना हॉपिंग गया था:

if (mystring in ("a", "b", "c")) 

यह संभव है?

+3

एक शिम आपका उदाहरण गलत है, होता है आप बताए जाते हैं और की तुलना नहीं। – epascarello

+0

सच है, यह एक टाइपो था। धन्यवाद – Diego

+0

मैं एरे @ डैनियलए के बारे में बात नहीं कर रहा हूं। मुझे पता है कि मैं तारों को एक में जोड़ सकता हूं, लेकिन मेरा मानना ​​है कि – Diego

उत्तर

18

आप इस

if ([ 'a', 'b', 'c' ].indexOf(mystring) > -1) { ... } 

संपादित ES7 के साथ की तरह indexOf() इस्तेमाल कर सकते हैं एक छोटे से सरलीकरण आता है। आज सिर्फ क्रोम 47+ और एफएफ के रूप में इसे समर्थन करने लगते हैं 43+:

if ([ 'a', 'b', 'c' ].includes(mystring)) { ... } 
+0

धन्यवाद, सबसे आसान तरीका प्रतीत होता है। – Diego

+0

धन्यवाद! मिस्टर सिरो –

1

आप indexOf

[1,2,3].indexOf(1) will give 0 
[1,2,3].indexOf(4) will give -1 

तो उपयोग कर सकते हैं, तो आप देख सकते हैं कि indexOf रिटर्न -1।

तारों के लिए समान।

0

तरह

foreach (str in strings) { 
    if (mystring.contains(str)) { 
     ... 
    } 
} 

काम कर सकते हैं कुछ।

+0

में शामिल हैं? आईई हेड अप के लिए –

5

indexOf का प्रयोग पहली बात यह है कि मन में आता है है, लेकिन आप को ध्यान में रखना है, यह है कि वहाँ पुराने आईईएस (ताकि आप इसे अनुकरण करने के लिए अपने कस्टम कोड का उपयोग करने के लिए होता है, या बस सीधे जाने में कोई .indexOf समारोह jQuery.inArray या underscore.js indexOf जैसे कुछ के लिए)।

if ([ 'a', 'b', 'c' ].indexOf(mystring) > -1) { ... } 

साइड नोट: के रूप में आप, jQuery स्रोत में inArray परिभाषा को देखकर अपनी खुद की indexOf प्रतिस्थापन लिख कर देख सकते हैं बहुत आसान है। तो मैंने कहा - अपनी खुद की विधि लिखें, इसे अन्य पुस्तकालयों से कॉपी-पेस्ट करें या केवल उन libs का उपयोग करें यदि आप वहां मौजूद प्रत्येक ब्राउज़र में indexOf का उपयोग करने में सक्षम होना चाहते हैं।

+0

धन्यवाद +1 नहीं है – Diego

0

आपका संस्करण तीन वर्णों के लिए सबसे तेज़ और सबसे अधिक पढ़ने योग्य है।

थोड़ा और संभावित मान के साथ

, तो आप कुछ इस तरह इस्तेमाल कर सकते हैं:

var c; 
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') { 

लेकिन वह मनोरंजन के लिए मुख्य रूप से है ...

4

आप इसे पुराने तरीके से कर सकता है

a = "a"; 
b = ["a","b","c","d"]; 


function check(a,b){ 
    i = 0;   
    for (i=0;i<b.length;i++) { 
     if (a === b[i]) { 
      return true; 
     } 
    } 
    return false; 
} 

alert(check (a,b)) 

ध्यान दें कि indexOf is a recent addition to the ECMA-262 standard; as such it may not be present in all browsers आप IE के साथ इस का उपयोग करने जा रहे हैं यह केवल संस्करण 9 के साथ या इसके बाद काम करेंगे

+0

धन्यवाद +1 के लिए कोई फंक्शन – Diego

1

मैं कुछ इस तरह लगता है:

if (["a", "b", "c"].indexOf(mystring) != -1) { 
    // do something 
} 
1
if (["a", "b", "c"].indexOf(mystring) != -1) {} 

यह सबसे अच्छा तरीका होगा, लेकिन यह कुछ ब्राउज़रों पर काम न करें।

0

Addtionally:

String.prototype.in = function(){ 
    return ~[].slice.call(arguments).indexOf(this.valueOf()) ? true : false; 
} 
//usage 
var myStr = 'a'; 
myStr.in('a','b','c'); //=> true 
'd'.in('a','b','c'); //=> false 

पुराने ब्राउज़र के लिए:: आप तुलना के लिए एक स्ट्रिंग विस्तार बना सकते हैं इस MDN page के लिए Array.indexOf

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

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