念のためtrycatch設定
This commit is contained in:
parent
5678ad5b35
commit
6c3b186c9b
@ -96,26 +96,15 @@ export const EachTrainInfo = ({
|
|||||||
return StationNumbers[0];
|
return StationNumbers[0];
|
||||||
});
|
});
|
||||||
function findReversalPoints(array) {
|
function findReversalPoints(array) {
|
||||||
// arrayは現在位置の駅ID(駅在宅の場合は1つの配列、駅間の場合は2つの配列)
|
try {
|
||||||
// stopStationIDListは停車駅の駅IDの配列
|
// arrayは現在位置の駅ID(駅在宅の場合は1つの配列、駅間の場合は2つの配列)
|
||||||
if (!stopStationIDList.length) return [];
|
// stopStationIDListは停車駅の駅IDの配列
|
||||||
// arrayが二次元配列だったら早期リターン
|
if (!stopStationIDList.length) return [];
|
||||||
if (!array instanceof Array) return [];
|
// arrayが二次元配列だったら早期リターン
|
||||||
if (!array.length) return [];
|
if (!array instanceof Array) return [];
|
||||||
if (array[0] instanceof Array) return [];
|
if (!array.length) return [];
|
||||||
const arrayNumber = array.map((d) => ({
|
if (array[0] instanceof Array) return [];
|
||||||
line: d
|
const arrayNumber = array.map((d) => ({
|
||||||
.split("")
|
|
||||||
.filter((s) => "A" < s && s < "Z")
|
|
||||||
.join(""),
|
|
||||||
ID: d
|
|
||||||
.split("")
|
|
||||||
.filter((s) => "0" <= s && s <= "9")
|
|
||||||
.join(""),
|
|
||||||
}));
|
|
||||||
const stopStationIDListNumber = stopStationIDList.map((d) => {
|
|
||||||
if (!d) return { line: [], ID: [] };
|
|
||||||
return {
|
|
||||||
line: d
|
line: d
|
||||||
.split("")
|
.split("")
|
||||||
.filter((s) => "A" < s && s < "Z")
|
.filter((s) => "A" < s && s < "Z")
|
||||||
@ -124,84 +113,99 @@ export const EachTrainInfo = ({
|
|||||||
.split("")
|
.split("")
|
||||||
.filter((s) => "0" <= s && s <= "9")
|
.filter((s) => "0" <= s && s <= "9")
|
||||||
.join(""),
|
.join(""),
|
||||||
};
|
}));
|
||||||
});
|
const stopStationIDListNumber = stopStationIDList.map((d) => {
|
||||||
// 完全一致
|
if (!d) return { line: [], ID: [] };
|
||||||
if (array.length == 1) {
|
return {
|
||||||
const index = stopStationIDList.indexOf(array[0]);
|
line: d
|
||||||
if (index != -1) return [index];
|
.split("")
|
||||||
// 通過駅の場合
|
.filter((s) => "A" < s && s < "Z")
|
||||||
for (let i = 0; i < stopStationIDListNumber.length - 1; i++) {
|
.join(""),
|
||||||
if (stopStationIDListNumber[i].ID < arrayNumber[0].ID) {
|
ID: d
|
||||||
if (stopStationIDListNumber[i + 1].ID > arrayNumber[0].ID) {
|
.split("")
|
||||||
return [i + 1];
|
.filter((s) => "0" <= s && s <= "9")
|
||||||
}
|
.join(""),
|
||||||
}
|
|
||||||
if (stopStationIDListNumber[i].ID > arrayNumber[0].ID) {
|
|
||||||
if (stopStationIDListNumber[i + 1].ID < arrayNumber[0].ID) {
|
|
||||||
return [i + 1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 駅間の場合
|
|
||||||
if (array.length == 2) {
|
|
||||||
const index1 = stopStationIDList.indexOf(array[0]);
|
|
||||||
const index2 = stopStationIDList.indexOf(array[1]);
|
|
||||||
if (index1 != -1 && index2 != -1) {
|
|
||||||
// 駅間で通過駅も無い場合
|
|
||||||
if (index1 < index2) {
|
|
||||||
if (index1 + 1 == index2) {
|
|
||||||
return [index2];
|
|
||||||
} else {
|
|
||||||
const returnArray = [];
|
|
||||||
for (let i = index1 + 1; i <= index2; i++) {
|
|
||||||
returnArray.push(i);
|
|
||||||
}
|
|
||||||
return returnArray;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (index1 > index2) {
|
|
||||||
if (index2 + 1 == index1) return [index1];
|
|
||||||
else {
|
|
||||||
const returnArray = [];
|
|
||||||
for (let i = index2 + 1; i <= index1; i++) {
|
|
||||||
returnArray.push(i);
|
|
||||||
}
|
|
||||||
return returnArray;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const getNearStationID = (stationID) => {
|
|
||||||
for (let i = 0; i <= stopStationIDListNumber.length; i++) {
|
|
||||||
if (stopStationIDListNumber[i].ID < stationID) {
|
|
||||||
if (stopStationIDListNumber[i + 1].ID > stationID) {
|
|
||||||
return i + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (stopStationIDListNumber[i].ID > stationID) {
|
|
||||||
if (stopStationIDListNumber[i + 1].ID < stationID) {
|
|
||||||
return i + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
let newIndex1 = index1;
|
});
|
||||||
let newIndex2 = index2;
|
// 完全一致
|
||||||
if (index1 == -1) {
|
if (array.length == 1) {
|
||||||
newIndex1 = getNearStationID(arrayNumber[0].ID);
|
const index = stopStationIDList.indexOf(array[0]);
|
||||||
}
|
if (index != -1) return [index];
|
||||||
if (index2 == -1) {
|
|
||||||
newIndex2 = getNearStationID(arrayNumber[1].ID);
|
|
||||||
}
|
|
||||||
if (newIndex1 && newIndex2) {
|
|
||||||
return [newIndex1, newIndex2];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 通過駅の場合
|
// 通過駅の場合
|
||||||
|
for (let i = 0; i < stopStationIDListNumber.length - 1; i++) {
|
||||||
|
if (stopStationIDListNumber[i].ID < arrayNumber[0].ID) {
|
||||||
|
if (stopStationIDListNumber[i + 1].ID > arrayNumber[0].ID) {
|
||||||
|
return [i + 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (stopStationIDListNumber[i].ID > arrayNumber[0].ID) {
|
||||||
|
if (stopStationIDListNumber[i + 1].ID < arrayNumber[0].ID) {
|
||||||
|
return [i + 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// 駅間の場合
|
||||||
|
if (array.length == 2) {
|
||||||
|
const index1 = stopStationIDList.indexOf(array[0]);
|
||||||
|
const index2 = stopStationIDList.indexOf(array[1]);
|
||||||
|
if (index1 != -1 && index2 != -1) {
|
||||||
|
// 駅間で通過駅も無い場合
|
||||||
|
if (index1 < index2) {
|
||||||
|
if (index1 + 1 == index2) {
|
||||||
|
return [index2];
|
||||||
|
} else {
|
||||||
|
const returnArray = [];
|
||||||
|
for (let i = index1 + 1; i <= index2; i++) {
|
||||||
|
returnArray.push(i);
|
||||||
|
}
|
||||||
|
return returnArray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index1 > index2) {
|
||||||
|
if (index2 + 1 == index1) return [index1];
|
||||||
|
else {
|
||||||
|
const returnArray = [];
|
||||||
|
for (let i = index2 + 1; i <= index1; i++) {
|
||||||
|
returnArray.push(i);
|
||||||
|
}
|
||||||
|
return returnArray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const getNearStationID = (stationID) => {
|
||||||
|
for (let i = 0; i <= stopStationIDListNumber.length; i++) {
|
||||||
|
if (stopStationIDListNumber[i].ID < stationID) {
|
||||||
|
if (stopStationIDListNumber[i + 1].ID > stationID) {
|
||||||
|
return i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (stopStationIDListNumber[i].ID > stationID) {
|
||||||
|
if (stopStationIDListNumber[i + 1].ID < stationID) {
|
||||||
|
return i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let newIndex1 = index1;
|
||||||
|
let newIndex2 = index2;
|
||||||
|
if (index1 == -1) {
|
||||||
|
newIndex1 = getNearStationID(arrayNumber[0].ID);
|
||||||
|
}
|
||||||
|
if (index2 == -1) {
|
||||||
|
newIndex2 = getNearStationID(arrayNumber[1].ID);
|
||||||
|
}
|
||||||
|
if (newIndex1 && newIndex2) {
|
||||||
|
return [newIndex1, newIndex2];
|
||||||
|
}
|
||||||
|
|
||||||
return [];
|
// 通過駅の場合
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 使用例
|
// 使用例
|
||||||
|
Loading…
Reference in New Issue
Block a user