gpt4 book ai didi

javascript - 简化 JavaScript 中的 switch case

转载 作者:行者123 更新时间:2023-12-01 02:32:45 24 4
gpt4 key购买 nike

我有一个相当重复的 switch case 语句,在我寻求学习最简单的做事方法的过程中,我想转向 SO 并看看是否有更优雅的解决方案来解决以下问题:

        switch(id)
{
case 'ib-02a':
if(direction == 'left')
setHash('ib-02b');
break;
case 'ib-02b':
if(direction == 'right')
setHash('ib-02a');
if(direction == 'left')
setHash('ib-02c');
break;
case 'ib-02c':
if(direction == 'right')
setHash('ib-02b');
if(direction == 'left')
setHash('ib-02d');
break;
case 'ib-02d':
if(direction == 'right')
setHash('ib-02c');
break;

case 'ib-03a':
if(direction == 'left')
setHash('ib-03b');
break;
case 'ib-03b':
if(direction == 'right')
setHash('ib-03a');
if(direction == 'left')
setHash('ib-03c');
break;
case 'ib-03c':
if(direction == 'right')
setHash('ib-03b');
if(direction == 'left')
setHash('ib-03d');
break;
case 'ib-03d':
if(direction == 'right')
setHash('ib-03c');
break;

case 'pb-05a':
if(direction == 'left')
setHash('pb-05b');
break;
case 'pb-05b':
if(direction == 'right')
setHash('pb-05a');
if(direction == 'left')
setHash('pb-05c');
break;
case 'pb-05c':
if(direction == 'right')
setHash('pb-05b');
if(direction == 'left')
setHash('pb-05d');
break;
case 'pb-05d':
if(direction == 'right')
setHash('pb-05c');
break;
}

我正在读取滑动事件,如果我滑动的元素的 ID 与 ib-02*、ib-03* 或 pb-05* 匹配,我将调用适当 ID 的 setHash 函数。如果我在 *a 上滑动,我会向左滑动到 *b。如果我在 *b 上滑动,我会向右滑动到 *a,向左滑动到 *c。依此类推,总是在 *a 和 *d 之间。

必须有一种重复性较低的方法来做到这一点,但我不确定最好的方法是什么。

最佳答案

将它们映射到一个对象怎么样?然后只需将 setHash 与检索到的值一起使用即可。

var ids = {
'pb-05c' : {
left : 'pb-05d',
right : 'pb-05b'
}
...
}

function setHashes(id,direction){
if(id && ids[id]){
id = ids[id];
if(direction && id[direction]){
setHash(id[direction]);
}
}
}

这都是检索,没有条件评估,这对性能有好处。

关于javascript - 简化 JavaScript 中的 switch case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12014720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com