java回调函数 策略模式_关于实际代码中如何用策略模式处理频繁的 if else 的问题...

直接上代码吧 都在代码里写清楚了

问题就是

如何把函数中 tabs.filter.forEach 这些几乎相同的逻辑 独立出来 之前学习了策略模式 但是想不到好的方案 请大佬指点一二let tabs = [{index:0,name:'angelaBaby'},{index:1,'陈冠西'},{index:2,'李bingbing'},{index:3,'范特西'}]

let COMMAND_TYPE_LIST = {

OTHER:'other',

RIGHT:'right',

SELF:'self',

}

/**

* @desc 抽中的成员逻辑

* @param {*} type:string - 抽中的类型

* @param {*} randomIndex:number - 抽中的数组 index

* @example

* 比如 type==='other' randomIndex=1 那么抽中的成员就是 0,2,3

* 比如 type==='right' randomIndex=1 那么抽中的成员就是 2,3

* 比如 type==='self' randomIndex=1 那么抽中的成员就是 1

* @todo

* 如何把 tabs.filter.forEach 这些几乎相同的逻辑 独立出来 之前学习了策略模式 但是想不到好的方案 请大佬指点一二

*/

function checkedPerson(type,randomIndex){

if (type === COMMAND_TYPE_LIST.OTHER) {

//抽中其他

tabs

.filter((item, index) => index !== randomIndex)

.forEach((tab) => {

//循环处理逻辑

})

} else if (type === COMMAND_TYPE_LIST.RIGHT) {

//抽中右侧

tabs

.filter((item, index) => index > randomIndex)

.forEach((tab) => {

//循环处理逻辑

})

} else if (type === COMMAND_TYPE_LIST.SELF) {

//抽中自身

tabs

.filter((item, index) => index === randomIndex)

.forEach((tab) => {

//循环处理逻辑

})

}

}

checkedPerson(COMMAND_TYPE_LIST.OTHER,2)//抽中的成员就是 0,1,3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值