0-5 ani: gratuit
5-10 ani: $10
10-65 ani: $20
65+ ani: gratuit
Asa ca am facut
const age = "10";
if (age >= 0 && age <= 5 || age >= 65) {
console.log ("Free entry!")
}
else if (age >= 5 && age <= 10) {
console.log ("$10");
}
else if (age >= 10 && age <= 65) {
console.log ("$20")
}
else {
console.log ("Vârstă invalidă");
}
Cum adaug si conditia ca atunci cand introduci la string-ul “age” numere negative de la -0 spre minus infinit si de la 100 spre plus infinit sa iti zica consola ce vrei tu?
Spre exemplu, eu am incercat, dar nu a mers urmatoarea comanda:
else if (age <= -0 || age < 0 && age > 100) {
console.log ("You are either too old or the age number is invalid/negative).
}
Sunt la inceput, don’t judge me!
Later edit:
Nu imi merge nimic orice as face pentru ca am dat deja functia
age >= 0
age < 100
iar JS crede ca nu mai are rost sa umble mai departe, deci probabil trebuie ori sa separ numerele ori nu stiu… ceva in genul I guess…
0-5 ani: gratuit
5-10 ani: $10
10-65 ani: $20
65+ ani: gratuit
Cum adaug si conditia ca atunci cand introduci la string-ul “age” numere negative de la -0 spre minus infinit si de la 100 spre plus infinit sa iti zica consola ce vrei tu?
Poti lua in considerare si un switch statement, este un pic mai usor de citit (IMHO):
switch (true) {
case age <= 5:
console.log('Free')
break
case age <= 10:
console.log('$10')
break
case age <= 65:
console.log('$20')
break
default:
console.log('Free')
}
Alta sugestie este ca atunci cand ai conditionale mai complexe sa pui paranteze ca sa fie clar cum sung grupate:
age >= 0 && age <= 5 || age >= 65 // bad
(age >= 0 && age <= 5) || age >= 65 // better
O alta abordare a fi early return ul. Ceva de genul asta
function getPriceByAge(age) {
if (typeof age !== 'number' || age < 0 || age > 100) {
console.log ("You are either too old or the age number is invalid/negative");
return;
}
if (age >= 0 && age <= 5 || age >= 65) {
console.log("Free entry!");
return;
}
if (age >= 5 && age <= 10) {
console.log("$10")
return;
}
if (age >= 10 && age <= 65) {
console.log("$20");
return;
}
}
Evident, se poate extinde, poti face ceva helper de genul asta care sa faca codul un pic mai verbose (ofc, in cazul de fata e posibil sa fie un pic over engineered)
function isInInterval(value, min, max) {
return value => min && value <= max;
}
Am lasat aici un fiddle in caz ca vrei sa te joci ad hoc Edit fiddle - JSFiddle - Code Playground . De precizat ca nu am testat nimic, dar daca descoperi vreo greseala cu atat mai bine, tema pt acasa