私はかなり反復的なswitchcaseステートメントを持っており、物事を行う最も簡単な方法を学ぶために、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の間にあります。
これを行うには繰り返しの少ない方法があるはずですが、最善のアプローチが正確にはわかりません。