Bagaimana cara menggunakan kondisi OR dalam pernyataan Javascript?


108

Saya memahami bahwa dalam JavaScript Anda dapat menulis:

if (A && B) { do something }

Tetapi bagaimana cara menerapkan ATAU seperti:

if (A OR B) { do something }

2
Ini adalah cara tidak spesifik jQuery. Ini hanya perpustakaan Javascript. Pertanyaan Anda khusus Javascript.
BalusC

2
@BalusC mereka hampir identik hari ini: P
Dolbz

1
@Pramugari_id : P
web-stars

1
@ web-stars banyak yang berubah sejak 2010 :)
Dolbz

@Dolbz mmm, ups ...: P Dan saya masih tidak tahu apa-apa sejak 2010.
web-bintang

Jawaban:



84

Perlu dicatat bahwa ||juga akan kembali truejika KEDUA Adan Byang true.

Di JavaScript, jika Anda mencari Aatau B, tetapi tidak keduanya , Anda perlu melakukan sesuatu yang mirip dengan:

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

Seharusnya frasa pertama tidak menjadi "Perlu dicatat || akan mengembalikan nilai true jika EITHER var A OR var B is true" ?? Ini menyiratkan apa yang Anda sebutkan adalah (true | true) = true. yang umum dan dipahami.
Punith Raj

10
(A &&! B) || (B &&! A) dapat diganti dengan A ^ B yang jauh lebih mulus

1
@Murplyx: Dalam banyak kasus ya, tetapi angka di luar rentang 32 bit bisa gagal. (Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...akan menjadi pengganti yang lebih pendek yang tidak memiliki batasan 32-bit. Atau mungkinif (!A != !B) {...

1
@squint Mengapa benar atau salah pernah berada di luar rentang 32 bit sehingga hanya 0 atau 1, dan btw jika Anda membandingkan angka, gunakan saja !! n untuk mendapatkan nilai boolean.




9

ini contoh saya:

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

Ini mengatakan bahwa jika jawabannya Ya ya atau YeS maka hal yang sama akan terjadi


1
Apakah jawaban Anda lebih baik dari jawaban yang ada? Ini kasus penggunaan tertentu?
emecas

Apakah ini berhasil? Saya membuat kode seperti itu tetapi itu kesalahan sintaks. Saya membuat kode seperti ini. if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Penguin

7
Ya, saya menemukan cara yang sulit bahwa Anda harus memasukkan setiap pernyataan secara terpisah. Saya bekerja if (number === 1||2||3)seperti itu while (true); kondisi kedua dan ketiga menanyakan apakah 2 adalah 2 dan / atau 3 adalah 3. Mereka selalu menyelesaikan sesuai dengan pernyataan yang selalu lewat. Begitulah rencanaku untuk mengurangi jumlah karakter. Menjaga pernyataan dalam tanda kurung membuatnya lebih mudah untuk dibaca.
TimSmith-Aardwolf

3
Jauh lebih baik menggunakan .toLowerCase () daripada harus memeriksa semua varian huruf yang berbeda.
AquaAlex

1
var choice = prompt ("Apakah Anda memilih batu, kertas atau gunting?"). toLowerCase (); if (userChoice! = ("paper" || "rock" || "scissors")) {console.log ("Pilihan Tidak Valid dibuat"); }
AquaAlex

1

Ekspresi reguler juga dapat digunakan :

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

Berikut contoh ekspresi reguler secara umum:

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

Ini akan mencari "my" dalam variabel "myString". Anda dapat mengganti string langsung di tempat variabel "myString".

Sebagai bonus tambahan, Anda juga dapat menambahkan huruf "i" yang tidak peka huruf besar dan huruf "g" global ke penelusuran.

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


Menarik. Dokumentasi?
Ken Sharp

0

Lebih dari satu pernyataan kondisi diperlukan untuk menggunakan OR(||)operator dalam if kondisi dan notasi ||.

if(condition || condition){ 
   some stuff
}

1
Mengapa Anda menjawab pertanyaan lama dengan jawaban yang persis sama?
Ken Sharp

0

Anda dapat menggunakan Suka

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

1
Mengapa Anda menjawab pertanyaan lama dengan jawaban yang persis sama?
Ken Sharp

0

Jika kami akan menyebutkan ekspresi reguler, kami mungkin juga menyebutkan switchpernyataan tersebut .

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

Gunakan saja ||

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

Catatan: dengan string dan angka. Ini lebih rumit.

Periksa ini untuk pemahaman yang mendalam:


7
Pertanyaan ini telah dijawab empat tahun lalu. Apakah jawaban Anda lebih baik dari jawaban yang ada?
Frambot

@JoeFrambach: Tidak. Saya hanya ingin membuat jawaban yang lebih jelas :)
haotang
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.