Cách sử dụng điều kiện OR trong câu lệnh IF trong JavaScript?


108

Tôi hiểu rằng trong JavaScript bạn có thể viết:

if (A && B) { do something }

Nhưng làm cách nào để triển khai OR chẳng hạn như:

if (A OR B) { do something }

2
Đây không phải là jQuery cụ thể. Nó chỉ là một thư viện Javascript. Câu hỏi của bạn là Javascript cụ thể.
BalusC

2
@BalusC ngày nay chúng hầu như đồng nghĩa với nhau: P
Dolbz

1
@Dolbz pfooo không đồng ý !! : P
web-stars

1
@ web-stars đã thay đổi rất nhiều kể từ năm 2010 :)
Dolbz

@Dolbz mmm, oops ...: P Và tôi vẫn không biết gì từ năm 2010.
web-stars

Câu trả lời:



84

Đáng chú ý rằng ||cũng sẽ trở lại truenếu CẢ HAI ABđược true.

Trong JavaScript, nếu bạn đang tìm kiếm Ahoặc B, nhưng không phải cả hai , bạn sẽ cần phải làm điều gì đó tương tự như:

if( (A && !B) || (B && !A) ) { ... }

Cụm từ đầu tiên không nên là "Đáng lưu ý rằng || sẽ trả về true nếu EITHER var A OR var B là true" ?? Nó ngụ ý những gì bạn đề cập là (true | true) = true. cái nào phổ biến và dễ hiểu.
Punith Raj

10
(A &&! B) || (! B && A) có thể được thay thế bằng A ^ B mà là nhiều mượt mà

1
@Murplyx: Trong hầu hết các trường hợp là có, nhưng các số bên ngoài phạm vi 32 bit có thể bị lỗi. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...sẽ là một thay thế ngắn hơn sẽ không có giới hạn 32 bit. Hoặc có thểif (!A != !B) {...

1
@squint Tại sao true hoặc false lại nằm ngoài phạm vi 32 bit do đó chúng chỉ là 0 hoặc 1 và btw nếu bạn so sánh các số chỉ cần sử dụng !! n để nhận giá trị boolean.




9

đây là ví dụ của tôi:

if(userAnswer==="Yes"||"yes"||"YeS"){
 console.log("Too Bad!");   
}

Điều này nói rằng nếu câu trả lời là Có có hoặc YeS hơn điều tương tự sẽ xảy ra


1
Câu trả lời của bạn có cải thiện dựa trên bất kỳ câu trả lời hiện có nào không? Đó là một trường hợp sử dụng cụ thể?
emecas

Nó có hoạt động không? Tôi viết mã như vậy nhưng đó là lỗi cú pháp. Tôi viết mã như thế này. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Penguin

7
Vâng, tôi đã phát hiện ra một cách khó khăn là bạn phải bao gồm từng câu lệnh riêng biệt. Tôi đã làm việc đó if (number === 1||2||3)là như thế nào while (true); các điều kiện thứ hai và thứ ba hỏi nếu 2 là 2 và / hoặc 3 là 3. Chúng luôn giải quyết là đúng với câu lệnh luôn vượt qua. Kế hoạch của tôi là giảm số lượng nhân vật. Mặc dù vậy, giữ các câu lệnh trong ngoặc đơn sẽ giúp bạn đọc dễ dàng hơn.
TimSmith-Aardwolf

3
Chỉ tốt hơn nhiều khi sử dụng .toLowerCase () thay vì phải kiểm tra tất cả các biến thể trường hợp khác nhau.
AquaAlex

1
var choice = prompt ("Bạn chọn oẳn tù tì?"). toLowerCase (); if (userChoice! = ("paper" || "rock" || "pull")) {console.log ("Đã đưa ra lựa chọn không hợp lệ"); }
AquaAlex

1

Người ta cũng có thể sử dụng biểu thức chính quy :

var thingToTest = "B";
if (/A|B/.test(thingToTest)) alert("Do something!")

Dưới đây là một ví dụ về biểu thức chính quy nói chung:

var myString = "This is my search subject"
if (/my/.test(myString)) alert("Do something here!")

Điều này sẽ tìm kiếm "của tôi" trong biến "myString". Bạn có thể thay thế một chuỗi trực tiếp thay cho biến "myString".

Như một phần thưởng bổ sung, bạn cũng có thể thêm chữ "i" không phân biệt chữ hoa chữ thường và "g" chung vào tìm kiếm.

var myString = "This is my search subject"
if (/my/ig.test(myString)) alert("Do something here");


Hấp dẫn. Tài liệu?
Ken Sharp

0

Sau đó, một câu lệnh điều kiện là cần thiết để sử dụng OR(||)toán tử nếu điều kiện và ký hiệu là ||.

if(condition || condition){ 
   some stuff
}

1
Tại sao bạn trả lời các câu hỏi cũ với câu trả lời chính xác như nhau?
Ken Sharp

0

Bạn có thể sử dụng Like

if(condition1 || condition2 || condition3 || ..........)
{       
     enter code here
}

1
Tại sao bạn trả lời các câu hỏi cũ với câu trả lời chính xác như nhau?
Ken Sharp

0

Nếu chúng ta sẽ đề cập đến cụm từ thông dụng, chúng ta cũng có thể đề cập đến switchcâu lệnh .

var expr = 'Papayas';
switch (expr) {
  case 'Oranges':
    console.log('Oranges are $0.59 a pound.');
    break;
  case 'Mangoes':
  case 'Papayas': // Mangoes or papayas
    console.log('Mangoes and papayas are $2.79 a pound.');
    // expected output: "Mangoes and papayas are $2.79 a pound."
    break;
  default:
    console.log('Sorry, we are out of ' + expr + '.');
}


-1

Chỉ dùng ||

if (A || B) { your action here }

Lưu ý: với chuỗi và số. Nó phức tạp hơn.

Kiểm tra điều này để hiểu sâu:


7
Câu hỏi này đã được trả lời bốn năm trước. Câu trả lời của bạn có cải thiện dựa trên bất kỳ câu trả lời hiện có nào không?
Frambot

@JoeFrambach: Số tôi chỉ muốn làm cho một câu trả lời rõ ràng hơn :)
haotang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.