我到了需要檢查一個條件并繼續執行另一個條件(如果它多次為真)的地步。
在這里,我使用fromNS了以數字為底的字串(如二進制、十進制、八進制),然后
fromValue使用正則運算式檢查它是否是有效數字。
如果該值根據基數無效,則displayError()呼叫函式。
from.addEventListener("input", function () {
fromValue = from.value;
// Is this method efficient
if((fromNS == "Binary" && !/^[01]*$/.test(fromValue)) ||
(fromNS == "Decimal" && !/^[0-9]*$/.test(fromValue)) ||
(fromNS == "Hexadecimal" && !/^[0-9a-fA-F]*$/.test(fromValue)) ||
(fromNS == "Octal" && !/^[0-7]*$/.test(fromValue)))
displayError();
// Or should I use this
switch (fromNS) {
case "Binary":
if(!/^[01]*$/.test(fromValue)) displayError();
break;
case "Decimal":
if(!/^[0-9]*$/.test(fromValue)) displayError();
break;
case "Hexadecimal":
if(!/^[0-9a-fA-F]*$/.test(fromValue)) displayError();
break;
case "Octal":
if(!/^[0-7]*$/.test(fromValue)) displayError();
break;
}
});
uj5u.com熱心網友回復:
我會選擇其中之一:
const conditions = [
formNS === "Binary" && !/^[01]*$/.test(form.value),
formNS === "Decimal" && !/^[0-9]*$/.test(form.value),
formNS === "Hexadecimal" && !/^[0-9a-fA-F]*$/.test(form.value),
formNS === "Octal" && !/^[0-7]*$/.test(form.value),
];
if (conditions.some(Boolean) {
displayError();
}
const conditions = [
{ ns: "Binary", regex: /^[01]*$/ },
{ ns: "Decimal", regex: /^[0-9]*$/ },
{ ns: "Hexadecimal", regex: /^[0-9a-fA-F]*$/ },
{ ns: "Octal", regex: /^[0-7]*$/ },
];
if (conditions.some(({ ns, value }) => formNS === ns && !value.match(regex))) {
displayError();
}
switch (true) {
case formNS === "Binary" && !/^[01]*$/.test(form.value):
case formNS === "Decimal" && !/^[0-9]*$/.test(form.value):
case formNS === "Hexadecimal" && !/^[0-9a-fA-F]*$/.test(form.value):
case formNS === "Octal" && !/^[0-7]*$/.test(form.value):
displayError();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533226.html
