Saya perlu beberapa kasus dalam pernyataan beralih dalam JavaScript, Sesuatu seperti:
switch (varName)
{
case "afshin", "saeed", "larry":
alert('Hey');
break;
default:
alert('Default case');
break;
}
Bagaimana saya bisa melakukan itu? Jika tidak ada cara untuk melakukan hal seperti itu di JavaScript, saya ingin tahu solusi alternatif yang juga mengikuti konsep KERING .
javascript
switch-statement
Afshin Mehrabani
sumber
sumber
Jawaban:
Gunakan fitur fall-through dari
switch
pernyataan tersebut. Kasing yang cocok akan berjalan hinggabreak
(atau akhirswitch
pernyataan) ditemukan, sehingga Anda dapat menulisnya seperti:sumber
switch('10') { case 1, '10': console.log('ok') }
cetakanok
switch(1)
. Label di sini hanyalah ekspresi koma.Ini berfungsi dalam JavaScript biasa
Bersulang.
sumber
Inilah pendekatan berbeda yang menghindari
switch
pernyataan itu sama sekali:sumber
switch ... case
. Terlalu mudah untuk melupakanbreak
pernyataan, dan jika Anda menggunakan fall through dengan sengaja,break
pernyataan yang dilupakan itu bisa sangat sulit dikenali. Versi pencarian metode ini juga memiliki banyak fitur hebat yangswitch ... case
kurang, seperti ekstensibilitas dinamis, atau kemampuan untuk sepenuhnya mengganti objek untuk mencapai mode switching. Ini juga lebih mudah untuk tetap rapi, dan dapat mengarah pada kode yang lebih dapat dipelihara. Lihat ericleads.com/2012/12/switch-case-considered-harmful//fallthrough
di tempatbreak
setiap kali saya sengaja menghilangkanbreak
. Itu membantu mengidentifikasi kapan itu kesalahan dan kapan disengaja.Dalam Javascript untuk menetapkan banyak kasus dalam sebuah saklar, kita harus mendefinisikan
different case without break inbetween
seperti yang diberikan di bawah ini:Silakan lihat contoh klik pada tautan
sumber
Jika Anda menggunakan ES6, Anda dapat melakukan ini:
Atau untuk versi JavaScript yang lebih lama, Anda dapat melakukan ini:
Perhatikan bahwa ini tidak akan berfungsi di browser IE yang lebih lama, tetapi Anda bisa menambal dengan cukup mudah. Lihat pertanyaan, tentukan apakah string ada dalam daftar di javascript untuk informasi lebih lanjut.
sumber
includes
kata? Ambil pilihanmu.Di simpul tampaknya Anda diizinkan untuk melakukan ini:
Ini membuat kode lebih ringkas dalam beberapa kasus.
sumber
Menambah dan mengklarifikasi jawaban Stefano, Anda dapat menggunakan ekspresi untuk secara dinamis mengatur nilai untuk kondisi yang diaktifkan, misalnya:
Jadi dalam masalah Anda, Anda bisa melakukan sesuatu seperti:
meskipun tidak terlalu KERING ..
sumber
varName
di dalam ekspresi case, berharap varName di-cache kamu.Anda dapat menggunakan operator ' dalam ' ...
bergantung pada objek / permintaan hash ...
sehingga secepat javascript dapat ...
Selamat menikmati, ZEE
sumber
Saya menggunakan seperti ini:
sumber
g
bendera, karena Anda hanya menggunakan regex sekali dan membuangnya. Bahkan, jika Anda menjaga mereka di luar fungsi,g
bendera akan membahayakan Anda dengan mencoba mencocokkan dari indeks non-0 pada.test(
s berikutnya . Saya juga memperbaiki kesalahan ketik di mana sakelar padasensor
variabel dan tidaktrue
konstan untuk mencocokkan ekspresi boolean. Lihat hasil edit.case /officedocument/.test(type) && /presentation/.test(type): iconClass = "far fa-file-powerpoint red"; break;
Tergantung. Switch mengevaluasi sekali dan hanya sekali. Setelah pertandingan, semua pernyataan kasus berikutnya sampai 'meledak' tidak peduli apa yang dikatakan kasus tersebut.
sumber
Saya suka ini untuk kejelasan dan sintaks KERING.
sumber
Saya dapat melihat ada banyak jawaban bagus di sini, tetapi apa yang terjadi jika kita perlu memeriksa lebih dari 10 kasus? Ini pendekatan saya sendiri:
sumber
if (accessDenied.includes(varName)) return 'Access Denied!'; return 'Access Allowed.'
lebih dari cukup.Masalah dengan pendekatan di atas, adalah bahwa Anda harus mengulangi beberapa
case
s setiap kali Anda memanggil fungsi yang memilikiswitch
. Solusi yang lebih kuat adalah memiliki peta atau kamus .Berikut sebuah contoh
sumber
Kamu bisa melakukan ini:
atau hanya satu baris kode:
sedikit perbaikan dari jawaban ErikE
sumber
Bagi siapa pun yang datang ke sini dengan masalah yang sama dengan yang saya alami, yang saya alami setelah beberapa minggu pengkodean dan kejenuhan, situasi saya adalah sesuatu yang mirip dengan:
Selalu
default
dimasukkan. Jika Anda mengalami masalah pernyataan beralih multi-kasus yang serupa, yang Anda cari adalah:Semoga ini bisa membantu seseorang, saya mencabut rambut saya sebelum mengingat untuk menggunakan sakelar dengan cara yang sama seperti saya menggunakannya dalam reduksi redux saya.
sumber
Salah satu solusi yang mungkin adalah:
sumber
Bagi saya ini adalah cara paling sederhana:
sumber
Cara lain melakukan banyak kasus dalam pernyataan switch, ketika berada di dalam suatu fungsi
sumber
Anda bisa menulis seperti ini:
sumber
sumber
switch
pernyataan seharusnya bekerja. Hanya sajacase "1":
, tidakcase (num = "1"):
.document.getElementById("result").innerHTML = ....
luar sakelar dan menambahkan hasil nilai hari di akhir?num
tetapi masih berfungsi karenaswitch
sudah dievaluasi dan tugas menghasilkan nilai. Ini pemrograman dengan mutasi / pembelajaran mesin yang terbaik.cukup alihkan sakelar kondisi sakelar
sumber
(expression)
dalam tanda kurung, dan nilai balik harus menjadi input. Lihat jawaban sayaswitch(true) { case (var1 === 0 && var2 === true): {} }