多個條件對應數據處理(if else)

// 場景一:多個condition對應名稱 // 方案1: 將condition用Object對象形式存在Map對象裏 const actions = new Map([ [{identity:'guest',status:1},()=>{/*do sth*/}], [{identity:'guest',status:2},()=>{/*do sth*/}], //... ]) const onButtonClick = (identity,status)=>{ let action = [...actions].filter(([key,value])=>(key.identity == identity && key.status == status)) action.forEach(([key,value])=>value.call(this)) } // 方案2: 將condition用字符拼接形式存在Object對象裏 const actions = { 'guest_1':()=>{/*do sth*/}, 'guest_2':()=>{/*do sth*/}, //.... } const onButtonClick = (identity,status)=>{ let action = actions[`${identity}_${status}`] || actions['default'] action.call(this) } // 場景四: 根據範圍去進行不同處理 // 「舉個栗子:」 比如大家可能會遇到類似下面的需求:比如某平臺的信用分數評級,超過700-950,就是信用極好,650-700信用優秀,600-650信用良好,550-600信用中等,350-550信用較差。 // 方案一、用look-up表,把配置數據和業務邏輯分離 showGrace(grace,level,levelForGrace) { for(let i=0;i<level.length;i++){ if(grace>=level[i]){ return levelForGrace[i]; } } //如果不存在,那麼就是分數很低,返回最後一個 return levelForGrace[levelForGrace.length-1] } let graceForLevel=[700,650,600,550]; let levelText=['信用極好','信用優秀','信用良好','信用中等','信用較差']; showGrace(610,graceForLevel,levelText) // '信用良好'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章