在输入出生日期后,我用javascript编写了一个计算人的年龄的程序。年龄检查工作正常,但是我遇到了switch(true)的问题。我试图将输入限制为某些数字,因为月份的值不能超过12,并且取决于月份,日期不能超过一定的数量。
我试图在if语句中编写相同的代码。它仍然不起作用。
do {
var geboorte_datum = prompt("Voer uw leeftijd in(DD/MM/YYYY)");
var age = getAge(geboorte_datum);
var delen = geboorte_datum.split('/');
var geboorte_dag = delen[0];
var geboorte_maand = delen[1];
var geboorte_jaar = delen[2];
switch (true) {
case (delen[1] === 1 && delen[0] > 31):
case (delen[1] === 2 && delen[0] > 28 && (Number.isInteger(delen[2] / 4) === "false")):
case (delen[1] === 2 && delen[0] > 29 && (Number.isInteger(delen[2] / 4) === "true")):
case (delen[1] === 3 && delen[0] > 31):
case (delen[1] === 4 && delen[0] > 30):
case (delen[1] === 5 && delen[0] > 31):
case (delen[1] === 6 && delen[0] > 30):
case (delen[1] === 7 && delen[0] > 31):
case (delen[1] === 8 && delen[0] > 31):
case (delen[1] === 9 && delen[0] > 30):
case (delen[1] === 10 && delen[0] > 31):
case (delen[1] === 11 && delen[0] > 30):
case (delen[1] === 12 && delen[0] > 31):
case (delen[1] > 12):
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
break;
case (age > 17):
alert("U heeft nog geen toegang tot deze site.");
break;
default:
alert("Welkom.");
}
}
while (geboorte_maand === 12 && geboorte_dag > 31 || geboorte_maand === 11 && geboorte_dag > 30 || geboorte_maand === 10 && geboorte_dag > 31 || geboorte_maand === 9 && geboorte_dag > 30 || geboorte_maand === 8 && geboorte_dag > 31 || geboorte_maand === 7 && geboorte_dag > 31 || geboorte_maand === 6 && geboorte_dag > 30 || geboorte_maand === 5 && geboorte_dag > 31 || geboorte_maand === 4 && geboorte_dag > 30 || geboorte_maand === 3 && geboorte_dag > 31 || geboorte_maand === 2 && geboorte_dag > 29 && (geboorte_jaar / 4).isInteger() || geboorte_maand === 1 && geboorte_dag > 31 || geboorte_maand === 2 && geboorte_dag > 29 && ((geboorte_jaar / 4).isInteger() === "false") || geboorte_maand > 12);
以及我对if语句的尝试:
var geboorte_datum = prompt("Voer uw leeftijd in(DD/MM/YYYY)");
var age = getAge(geboorte_datum);
var delen = geboorte_datum.split('/');
var geboorte_dag = delen[0];
var geboorte_maand = delen[1];
var geboorte_jaar = delen[2];
if (delen[1] === 1 && delen[0] > 31) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 2 && delen[0] > 28 && (Number.isInteger(delen[2] / 4) === "false")) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 2 && delen[0] > 29 && (Number.isInteger(delen[2] / 4) === "true")) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 3 && delen[0] > 31) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 4 && delen[0] > 30) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 5 && delen[0] > 31) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 6 && delen[0] > 30) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 7 && delen[0] > 31) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 8 && delen[0] > 31) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 9 && delen[0] > 30) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (geboorte_maand === 10 && geboorte_dag > 31) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 11 && delen[0] > 30) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] === 12 && delen[0] > 31) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
if (delen[1] > 12) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (age < 18) {
alert("U heeft helaas nog geen toegang tot deze site.")
} else {
alert("Welkom.")
}
我希望输入超过天数或月数时,输出将显示警报。对于每个月,我增加了该月可以有多少天。但是switch(true)的结果始终是默认值。 if语句代码也不起作用。
答案 0 :(得分:1)
您的“日期”不是数字,而是字符串。因为您使用的是严格相等(let tickers = ['BTC/USDT','ETH/BTC','CELR/BTC',....] // comes as object from API
const exclude = ['MATIC', 'CELR']
Object.keys(tickers).map(function(key) {
for (var base in exclude) {
if ( key.includes(exclude[base]) ) {
delete tickers[key]
}
}
})
)
所以
'21'!== 21
然而
'21'== 21
通常,大多数人会鼓励严格相等,因此您可能只需要先使用===
函数将字符串转换为数字即可。
如果运行parseInt()
,则应该看到它是一个字符串-您将需要使用它作为数字来使任何此代码正常工作。
答案 1 :(得分:0)
您的代码有很多问题!
Number.isInteger(delen[2] / 4) === "false"
无法工作,因为您将布尔值与字符串进行了比较。delen[1]
相同。您可以简单地执行以下操作:
function getAge(dateStr) {
var delen = dateStr.split('/');
var geboorte_dag = Number(delen[0]);
var geboorte_maand = Number(delen[1]);
var geboorte_jaar = Number(delen[2]);
return new Date().getFullYear() - new Date(geboorte_jaar, geboorte_maand, geboorte_dag).getFullYear(); // Not exactly...
}
function isValidDate(dateStr) {
var delen = (dateStr || '').split('/');
var geboorte_dag = Number(delen[0]);
var geboorte_maand = Number(delen[1]);
var geboorte_jaar = Number(delen[2]);
var schrikkel_jaar = Number.isInteger(geboorte_jaar / 4);
return ((geboorte_maand === 1 && geboorte_dag <= 31)
|| (geboorte_maand === 2 && geboorte_dag <= 29 && schrikkel_jaar)
|| (geboorte_maand === 2 && geboorte_dag <= 28 && !schrikkel_jaar)
|| (geboorte_maand === 3 && geboorte_dag <= 31)
|| (geboorte_maand === 4 && geboorte_dag <= 30)
|| (geboorte_maand === 5 && geboorte_dag <= 31)
|| (geboorte_maand === 6 && geboorte_dag <= 30)
|| (geboorte_maand === 7 && geboorte_dag <= 31)
|| (geboorte_maand === 8 && geboorte_dag <= 31)
|| (geboorte_maand === 9 && geboorte_dag <= 30)
|| (geboorte_maand === 10 && geboorte_dag <= 31)
|| (geboorte_maand === 11 && geboorte_dag <= 30)
|| (geboorte_maand === 12 && geboorte_dag <= 31));
}
var geboorte_datum = prompt("Voer uw leeftijd in(DD/MM/YYYY)");
if (!isValidDate(geboorte_datum)) {
alert("U heeft uw geboortedatum verkeerd ingevuld. Probeer het opnieuw.");
} else if (getAge(geboorte_datum) < 18) {
alert("U heeft helaas nog geen toegang tot deze site.");
} else {
alert("Welkom.");
}