Le contenu de cet article concerne les techniques d'écriture pour une logique de jugement complexe en JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Dans certains scénarios, nous pouvons rencontrer plusieurs conditions de jugement. Dans ce cas, nous utilisons généralement if/else/switch pour le traitement, mais sous plusieurs jugements, comme celui-ci, il y aura beaucoup de code dans la méthode d'écriture. .Comment le résoudre ? Veuillez continuer à lire ci-dessous
Tout d'abord, prenons if/esle comme exemple, je n'écrirai plus la méthode d'écriture 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(); } }
const actions = { '1': 'function1', '2': 'function2', '3': 'function3', '4': 'function4', '5': 'function5' } function checkStatus(status) { let action = actions[status]; this[action]() }
const actions = { '1': ['function1','function2'], '2': ['function3','function4'], '3': ['function5','function6'], }
function checkStatus(status) { let action = actions[status]; this[action[0]]() this[action[1]]() }
Et s'il s'agit de jugements multiples ? Par exemple, lorsque nous jugeons le statut à 1, nous devons également déterminer si la valeur du type est 1 et ainsi de suite. . .
La condition correspond à
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 }
< 🎜. >
Une chose qui doit être expliquée ici est que Map peut utiliser n'importe quel type de données comme clé. Nous pouvons déterminer directement si la clé répond à nos conditions, et la méthode de traitement correspondante peut être écrite dans la valeur vulue correspondante. Cette façon d'écrire peut fondamentalement satisfaire la plupart des logiques de jugement. . . La difficulté sera améliorée ci-dessous. . .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)) }
const actions = new Map([ [{type:'1',status:2},()=>{functionA}], [{type:'3',status:3},()=>{/functionB}], [{type:'2',status:1},()=>{functionC}], [{type:'1',status:3},()=>{functionA}], //... ])
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)) }
J'espère qu'il y aura plus que simplement if/else/switch dans le futur. . . .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!