JavaScript复杂判断逻辑写法技巧
本篇文章给大家带来的内容是关于JavaScript复杂判断逻辑写法技巧,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
在某些场景中,我们可能会遇到多个判断条件的情况,针对这种情况,我们通常 会使使用if/else/switch来进行处理,但是多个判断下,这样的写法会有很多的代码,如何解决呢,请继续往下看
首先我们拿if/esle举个栗子,switch写法我就不再这写了
checkStatus(status) { if (status == 1) { function1(); } else if (status == 2) { function2(); } else if (status == 3) { function3(); } else if (status == 4) { function4(); } else if (status == 5) { function5(); } }
通过判断不同的status,执行不同的方法,这是很常见的写法,缺点是代码量很多,且不利于可读性,别人来维护的时候,不能快速的知道这个方法有多少个判断条件,需要调用多少个方法。必须要看完整个方法,才知道这些。下面就介绍些更优化的方法,本文针对vue写法
const actions = { '1': 'function1', '2': 'function2', '3': 'function3', '4': 'function4', '5': 'function5' } function checkStatus(status) { let action = actions[status]; this[action]() }
这种写法将方法名和需要判断的类型值进行绑定,调用的时候通过属性名找到对应的属性值即可调用对应的方法,写法简单明了。我们在扩展下,假如类型为1的时候,我们不止要调用一种方法怎么办,请看下面:
const actions = { '1': ['function1','function2'], '2': ['function3','function4'], '3': ['function5','function6'], }
我们可以将类型为1时,需要调用的方法,写在数组里面,那么调用的时候就可以这么拿:
function checkStatus(status) { let action = actions[status]; this[action[0]]() this[action[1]]() }
以上两种方法,是针对一元判断的时候使用的,具体使用看具体的场景。
假如是多元判断呢?例如,在判断status为1的时候,我们还需要判断type值为否为1等等。。。
条件对应为
if (status == 1 && type == 1) { //do someThing } else if (status == 2 && type == 2) { //do someThing } else if (status == 3 && type == 3) { //do someThing } else if (status == 4 && type == 4) { //do someThing } else if (status == 5 && type == 5) { //do someThing }
这种业务场景下,如果是用传统的if/else,代码量简直不敢想,接下来,看怎么优化这种情况
const actions = new Map([ [{type:'1',status:1},()=>{/*do sth*/}], [{type:'2',status:2},()=>{/*do sth*/}], //... ]) function checkStatus(type,status)=>{ let action = [...actions].filter(([key,value])=>(key.type == type && key.status == status)) action.forEach(([key,value])=>value.call(this)) }
这里需要解释的一点是,Map可以用任何类型的数据作为key。我们可以直接判断key是否符合我们的条件,对应的处理方法,可以写在对应的vulue值里面。这种写法基本能满足大部分判断逻辑了。。。下面将难度升级下。。。
上面我们讲到type和status 都是一对一对应的情况下执行相应的方法,加入type为1时,ststus为2和3 都需要执行相同的方法,type为2时,status为1,2也需要执行相同的方法呢?上面的方法也可以使用,下面这样:
const actions = new Map([ [{type:'1',status:2},()=>{functionA}], [{type:'3',status:3},()=>{/functionB}], [{type:'2',status:1},()=>{functionC}], [{type:'1',status:3},()=>{functionA}], //... ])
这样写已经能满足日常需求了,但上面重写了2次status为2的情况还是有点不爽,假如判断条件变得特别复杂,比如type有3种状态,status有10种状态,那你需要定义30条处理逻辑,而往往这些逻辑里面很多都是相同的,再用上面的写法似乎很难接受,那么可以这么写:
const actions = ()=>{ const functionA = ()=>{/*do sth*/} const functionB = ()=>{/*do sth*/} const functionC = ()=>{/*send log*/} return new Map([ [/^1_[1-4]$/,functionA], [/^2_.*$/,functionC], //... ]) } function checkStatus(type,status)=>{ let action = [...actions()].filter(([key,value])=>(key.test(`${type}_${status}`))) action.forEach(([key,value])=>value.call(this)) }
也就是说利用数组循环的特性,符合正则条件的逻辑都会被执行,那就可以同时执行公共逻辑和单独逻辑,因为正则的存在,你可以打开想象力解锁更多的玩法,不懂ES6Map特性,可以去了解下,上面的用法对于大量的判断逻辑来说,的确是优化了很多了。。
愿以后的日子里,不只是有if/else/switch。。。。
Atas ialah kandungan terperinci JavaScript复杂判断逻辑写法技巧. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian Pengenalan: Dengan perkembangan teknologi yang berterusan, teknologi pengecaman pertuturan telah menjadi bahagian penting dalam bidang kecerdasan buatan. Sistem pengecaman pertuturan dalam talian berdasarkan WebSocket dan JavaScript mempunyai ciri kependaman rendah, masa nyata dan platform merentas, dan telah menjadi penyelesaian yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian.

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Pengenalan kepada cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata: Dengan populariti Internet dan kemajuan teknologi, semakin banyak restoran telah mula menyediakan perkhidmatan pesanan dalam talian. Untuk melaksanakan sistem pesanan dalam talian masa nyata, kami boleh menggunakan teknologi JavaScript dan WebSocket. WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh merealisasikan komunikasi dua hala masa nyata antara pelanggan dan pelayan. Dalam sistem pesanan dalam talian masa nyata, apabila pengguna memilih hidangan dan membuat pesanan

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian Dalam era digital hari ini, semakin banyak perniagaan dan perkhidmatan perlu menyediakan fungsi tempahan dalam talian. Adalah penting untuk melaksanakan sistem tempahan dalam talian yang cekap dan masa nyata. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian dan memberikan contoh kod khusus. 1. Apakah itu WebSocket? WebSocket ialah kaedah dupleks penuh pada sambungan TCP tunggal.

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Pengenalan: Hari ini, ketepatan ramalan cuaca sangat penting kepada kehidupan harian dan membuat keputusan. Apabila teknologi berkembang, kami boleh menyediakan ramalan cuaca yang lebih tepat dan boleh dipercayai dengan mendapatkan data cuaca dalam masa nyata. Dalam artikel ini, kita akan mempelajari cara menggunakan teknologi JavaScript dan WebSocket untuk membina sistem ramalan cuaca masa nyata yang cekap. Artikel ini akan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Kami

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Penggunaan: Dalam JavaScript, kaedah insertBefore() digunakan untuk memasukkan nod baharu dalam pepohon DOM. Kaedah ini memerlukan dua parameter: nod baharu untuk dimasukkan dan nod rujukan (iaitu nod di mana nod baharu akan dimasukkan).

JavaScript ialah bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan web, manakala WebSocket ialah protokol rangkaian yang digunakan untuk komunikasi masa nyata. Menggabungkan fungsi berkuasa kedua-duanya, kami boleh mencipta sistem pemprosesan imej masa nyata yang cekap. Artikel ini akan memperkenalkan cara untuk melaksanakan sistem ini menggunakan JavaScript dan WebSocket, dan memberikan contoh kod khusus. Pertama, kita perlu menjelaskan keperluan dan matlamat sistem pemprosesan imej masa nyata. Katakan kita mempunyai peranti kamera yang boleh mengumpul data imej masa nyata
