他に使用できる 2 つの方法を次に示します。このコードはさらに圧縮できますが、読みやすくするために広げたままにしています。
短いリストの場合、スイッチ/ケースを使用して、複数のオプションで同じコードを実行できます。そのようです:
thingToTest = effect("Mouth")("Slider");
switch (thingToTest) {
case 7:
case 11:
case 16:
result = 103;
break;
case 6:
case 10:
case 15:
case 25:
case 26:
result = 102;
break;
case 5:
case 9:
case 12:
case 14:
case 19:
case 24:
case 27:
case 28:
result = 101;
break;
default:
result = 100;
break;
}
問題は、チェックする可能性のある結果が多数ある場合、非常に扱いにくくなる可能性があることです。その場合、各結果ケースの値を配列にして、それらをループします。
thingToTest = effect("Mouth")("Slider");
mySet1 = [7, 11, 16];
mySet2 = [6, 10, 15, 25, 26];
mySet3 = [5, 9, 12, 14, 19, 24, 27, 28];
result = 100; // Default
foundIt = 0;
for (i = 0; i < mySet1.length; i++) {
if (mySet1[i] == thingToTest) {
result = 103;
foundIt = 1;
break;
}
}
if(foundIt) {
for (i = 0; i < mySet2.length; i++) {
if (mySet2[i] == thingToTest) {
result = 102;
foundIt = 1;
break;
}
}
}
if(foundIt) {
for (i = 0; i < mySet3.length; i++) {
if (mySet3[i] == thingToTest) {
result = 101;
foundIt = 1;
break;
}
}
}
result;
連続するグループを条件付きステートメントに入れると、一致が既に見つかっている場合にそれらの配列を反復処理しないため、パフォーマンスがわずかに向上します。効率のために、最初に最も長い数字のリストの内容に対してテストするのが理にかなっています。これは、一致する可能性が高いためです。
これらのソリューションはそれほどコンパクトではないかもしれませんが、確実に拡張可能です。