2016-06-18 9 views
6

बस, वहाँ एक .includes विधि करने के लिए अनेक शर्तें जोड़ लिए एक रास्ता है, सोच उदाहरण के लिए:कई शर्तें() विधि

var value = str.includes("hello", "hi", "howdy"); 

कल्पना अल्पविराम राज्यों "या" (यह पूछ रहा है अब स्ट्रिंग है अगर हैलो हाय या कैसे हो। इसलिए केवल अगर एक है, और केवल शर्तों में से एक सच है।

वहाँ कि ऐसा करने का एक तरीका है?

+1

'or' अर्थ होगा कि _at least_ एक मैच के लिए पर्याप्त होगा। – robertklep

उत्तर

0

कि एक भी यदि काम करना चाहिए, और केवल शर्तों में से एक सत्य है:

var str = "bonjour le monde vive le javascript"; 
var arr = ['bonjour','europe', 'c++']; 

function contains(target, pattern){ 
    var value = 0; 
    pattern.forEach(function(word){ 
     value = value + target.includes(word); 
    }); 
    return (value === 1) 
} 

console.log(contains(str, arr)); 
+0

धन्यवाद, बहुत उपयोगी। – user6234002

3
includes() साथ

, नहीं, लेकिन आप REGEX साथ एक ही बात test() के माध्यम से प्राप्त कर सकते हैं:

var value = /hello|hi|howdy/.test(str); 

या, यदि शब्द एक गतिशील स्रोत से आ रहे हैं:

var words = array('hello', 'hi', 'howdy'); 
var value = new RegExp(words.join('|')).test(str); 

REGEX दृष्टिकोण है क्योंकि यह एक बेहतर विचार है आपको शब्दों को वास्तविक शब्दों के रूप में मिलान करने की अनुमति देता है, अन्य शब्दों में टोकन नहीं। तुम बस शब्द सीमा मार्कर \b, इसलिए जरूरत है:

var str = 'hilly'; 
var value = str.includes('hi'); //true, even though it doesn't say 'hi' 
var value = /\bhi\b/.test(str); //false - 'hi' appears but not as a word 
+1

शानदार, बिल्कुल धन्यवाद-बहुत बहुत धन्यवाद। – user6234002

+0

यदि शब्दों में विशेष regexp वर्ण होते हैं तो यह काम नहीं करेगा। साथ ही, यह ओपी की स्पष्ट आवश्यकता को पूरा नहीं करेगा, यह केवल तभी मेल खाता है जब ** एकल ** शब्द के साथ कोई मिलान हो। –

17

आप .some विधि here संदर्भित उपयोग कर सकते हैं।

some() विधि परीक्षण है कि क्या सरणी में कम से कम एक तत्व परीक्षण प्रदान की समारोह द्वारा कार्यान्वित गुजरता है।

// test cases 
 
var str1 = 'hi, how do you do?'; 
 
var str2 = 'regular string'; 
 

 
// does the test strings contains this terms? 
 
var conditions = ["hello", "hi", "howdy"]; 
 

 
// run the tests agains every element in the array 
 
var test1 = conditions.some(el => str1.includes(el)); 
 
var test2 = conditions.some(el => str2.includes(el)); 
 

 
// display results 
 
console.log(str1, ' ===> ', test1); 
 
console.log(str2, ' ===> ', test2);

+0

धन्यवाद। और अधिक व्यावहारिक। – iedmrc99

+1

नोट का प्वाइंट: 'कुछ() 'एक तरीका है, ऑपरेटर नहीं। अन्यथा, अच्छा जवाब। – Utkanos

+0

प्वाइंट लिया गया। धन्यवाद – dinigo

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