我有一个相当重复的 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 之间。
必须有一种较少重复的方法来做到这一点,但我不确定最好的方法是什么。