2016-06-18 12 views
6

chỉ tự hỏi, liệu có một cách để thêm nhiều điều kiện để một phương pháp .includes, ví dụ:nhiều điều kiện để .includes JavaScript() phương pháp

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

tưởng tượng các bang dấu phẩy "hoặc" (nó hỏi bây giờ nếu chuỗi chứa chào hi hay howdy. như vậy chỉ khi một, và chỉ có một trong các điều kiện là đúng.

là có một phương pháp để làm điều đó?

+1

'or' có ngụ ý rằng _at least_ một trận đấu sẽ là đủ. – robertklep

Trả lời

0

Điều đó sẽ làm việc ngay cả khi một, và chỉ có một trong các điều kiện là đúng:

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

cảm ơn bạn, rất hữu ích. – user6234002

3

với includes() , Không, nhưng bạn có thể đạt được điều tương tự với REGEX qua test():

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

Hoặc, nếu các từ được phát ra từ một nguồn động:

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

Phương pháp regex là một ý tưởng tốt hơn bởi vì nó cho phép bạn kết hợp các từ như các từ thực tế, chứ không phải các mã thông báo nói cách khác. Bạn chỉ cần ranh giới từ marker \b, vì vậy:

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

rực rỡ, hoàn hảo cảm ơn bạn rất nhiều. – user6234002

+0

Điều này sẽ không hoạt động nếu các từ chứa ký tự regexp đặc biệt. Ngoài ra, điều này sẽ không đáp ứng yêu cầu rõ ràng của OP nó chỉ phù hợp nếu có một kết hợp với một ** đơn ** từ. –

17

Bạn có thể sử dụng .some phương pháp tham chiếu here.

Các some() thử nghiệm phương pháp dù ít nhất một phần tử trong mảng vượt qua bài kiểm tra thực hiện bởi các chức năng được cung cấp.

// 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

cảm ơn bạn. thực tế hơn. – iedmrc99

+1

Điểm đáng chú ý: 'some()' là một phương thức, không phải là toán tử. Nếu không, câu trả lời tốt. – Utkanos

+0

Điểm chụp. Cảm ơn bạn – dinigo

Các vấn đề liên quan