Ich möchte eine Zahl zwischen zwei Werten begrenzen. Ich weiß, dass Sie in PHP Folgendes tun können:
$number = min(max(intval($number), 1), 20);
// this will make $number 1 if it's lower than 1, and 20 if it's higher than 20
Wie kann ich das in Javascript tun, ohne mehrere if
-Anweisungen und ähnliches schreiben zu müssen? Vielen Dank.
so was
var number = Math.min(Math.max(parseInt(number), 1), 20);
Benutze die lodash clamp Methode:
_.clamp(22, 1, 20) // Outputs 20
Sie haben mindestens zwei Möglichkeiten:
Sie können ein Paar bedingter Operatoren (? :
) verwenden:
number = number > 100 ? 100 : number < 0 ? 0 : number;
Oder Sie können Math.max
und Math.min
kombinieren:
number = Math.min(100, Math.max(0, number));
In beiden Fällen ist es relativ leicht, sich selbst zu verwirren. Wenn Sie dies an mehreren Stellen tun, könnten Sie eine Utility-Funktion in Betracht ziehen:
function clamp(val, min, max) {
return = val > max ? max : val < min ? min : val;
}
Dann:
number = clamp(number, 0, 100);
Verwenden Sie Math.min
und Math.max
.
Benötigt keine weitere Erklärung:
function clamp(value, min, max) {
return Math.min(Math.max(value, min), max);
}
Siehe auch: Was ist die eleganteste Art, eine Zahl einem Segment zuzuordnen? :
Update für ECMAScript 2017:
Math.clamp(x, lower, upper)
Beachten Sie jedoch, dass es sich ab heute um eine Stufe 1 Vorschlag handelt. Bis es allgemein unterstützt wird, können Sie ein polyfill verwenden.