rapid_agekara
03/12/2025, 7:03 AM1,通過駅範囲の指定,種別の判定
IF((station >= 1 && station <= 21)||syubethu > 1){
2,後述の通過駅判定後の処理(中身は中略)
var stopthink = checkStopthink(station, syubethu);
if (stopthink === true) {
//通過駅の動作
}else if (stopthink === false){
//通過駅じゃないときの動作
}
3,各種別ごとの通過駅判定(ここを簡略化したい)
function checkStopthink(station, syubethu) {
if (syubethu === 2) {
return station <= 5 ||station ===8 ||station === 9||station === 15|| station >= 21;
}
if (syubethu === 3) {
return station <= 5 ||station === 15|| station >= 21;
}
if (syubethu === 4) {
return station = 1 || station = 3 || station = 5 ||station === 15|| station >= 21;
}
}
主に3番のreturn構文にて停車駅を一つ一つstation = 3 のような形で書かなければならないところが文が長大になってしまうので{1,3,5,6,7}のように数字だけで完結するような構文にしたいと考えているのですが、当方技術不足によりchatGPTを使用してもいい結果が返ってこなかったため質問をさせていただいた次第です。
このような種別ごとの停車駅番号リストに当てはまるかどうかを判別する構文をもっと簡略化できる方法を知っている方いらっしゃいましたらご伝授いただきたく存じます。何卒宜しくお願い致します。
追記:スクリプト部分なんか黒幕かかっちゃって治し方わからないんでお手数ですが外しながらご覧いただければ幸いです…terraformers_efaa
03/12/2025, 7:13 AMpiposen_0801
03/12/2025, 7:14 AMpiposen_0801
03/12/2025, 7:16 AMrapid_agekara
03/12/2025, 7:17 AMcactus_pc28k
03/12/2025, 7:17 AMpiposen_0801
03/12/2025, 7:18 AMrapid_agekara
03/12/2025, 7:18 AMpiposen_0801
03/12/2025, 7:21 AMrapid_agekara
03/12/2025, 7:21 AMpiposen_0801
03/12/2025, 7:22 AMpiposen_0801
03/12/2025, 7:23 AMrapid_agekara
03/12/2025, 7:24 AMpiposen_0801
03/12/2025, 7:24 AMpiposen_0801
03/12/2025, 7:25 AMcactus_pc28k
03/12/2025, 7:31 AMjavascript
var えきs = {
//駅名: [各停, 急行]
동두천: [1, 1],
보산: [1, 0],
동두천중앙: [1, 1],
//省略
}
function とまるか(thisえき, しゅべつ){
if(typeof えきs[thisえき] == "undefinded"){
return true;
//えきsにない駅の場合trueをreturn
//この辺りうまくいじったらえきsにない場合各停以外return falseなど~~
}
return (えきs[thisえき][しゅべつ]);
}cactus_pc28k
03/12/2025, 7:32 AMjavascript
とまるか('보산', 0);
//true(1)
とまるか('보산', 1);
//false(0)
とまるか('국제금융센터.부산은행', 0);
//true(1)rapid_agekara
03/12/2025, 7:33 AMrapid_agekara
03/12/2025, 7:33 AMpiposen_0801
03/12/2025, 7:34 AMrapid_agekara
03/12/2025, 7:35 AMrapid_agekara
03/12/2025, 7:36 AMpiposen_0801
03/12/2025, 7:36 AMcactus_pc28k
03/12/2025, 7:36 AMrapid_agekara
03/12/2025, 7:36 AMpiposen_0801
03/12/2025, 7:39 AMrapid_agekara
03/12/2025, 7:39 AMcactus_pc28k
03/12/2025, 7:41 AMpiposen_0801
03/12/2025, 7:42 AMrapid_agekara
03/12/2025, 7:51 AMif(checkStopthink === true){
nextSta = Stations
}
else if (checkStopthink === true){
if(Button6 = 1){//上り
nextSta = このさきわらかん
}
通過駅だった場合上りの場合は一番近い数字の大きい停車駅、下りの場合は逆っていうのを書きたいんだけどなんか方法思いついたりしませんか助けてください
(処理イメージ)
Stadata 1,2,3,4,5,6,7,8,9→全駅のデータ関数
shubetsu 1,3,5,6,9 → とある種別の時の停車駅リスト(これは上記の質問で書き方解決積み)
stations 4 → 今入力された現位置データと仮定すると?(種別にはない停車駅)
Button6 = 1 → 上下情報から一番近くのshubetsu駅を選択して送出したい(1の場合は上り)
nextSta → 上りなので現種別で一番近い3を選択送出rapid_agekara
03/12/2025, 7:52 AMrapid_agekara
03/12/2025, 1:58 PMfunction checkStopthink(StanumCG, syubethu) {
var stopStations = {
2: [0, 1, 2, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
3: [0, 1, 2, 5, 9, 12, 13, 14, 18, 21],
4: [0, 1, 2, 5, 9, 14, 18, 21],
5: [0, 1, 2, 5, 9, 14, 18, 21],
6: [0, 1, 2, 5, 9, 14, 18, 21],
7: [0, 1, 2, 5, 14, 18, 21],
};
if (syubethu <= 1) {
return true;
}
if(typeof stopStations[syubethu] == "undefined"){
return true;
//stopStationsにない駅の場合trueをreturn
//この辺りうまくいじったらえきsにない場合各停以外return falseなど~~
}
return (stopStations[syubethu][StanumCG]);
}
if ((StanumCG >= 1 && StanumCG <= 21)) {
var CGstations = StanumCG;
if (checkStopthink(StanumCG, syubethu)) {
var Stanext = CGstations;
}
if (!checkStopthink(StanumCG, syubethu)) {
if (ueshita == 1) { // 上り(最も近い小さい停車駅を探す)
while (StanumCG > 0) { // 0以下にならないようにする
StanumCG--;
if (checkStopthink(StanumCG, syubethu)) {
Stanext = StanumCG;
break;
}
}
} else if (ueshita == 2) { // 下り(最も近い大きい停車駅を探す)
while (StanumCG < 21) { // 21を超えないようにする
StanumCG++;
if (checkStopthink(StanumCG, syubethu)) {
Stanext = StanumCG;
break;
}
}
}
}
}
自己解決しましたrapid_agekara
03/12/2025, 1:59 PM