it-swarm-eu.dev

Wie kann ich mit JavaScript eine Zahl zwischen einem Min/Max-Wert begrenzen?

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.

45
Alexandra

so was 

var number = Math.min(Math.max(parseInt(number), 1), 20);

Benutze die lodash clamp Methode:

_.clamp(22, 1, 20) // Outputs 20

6

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);
6
T.J. Crowder

Verwenden Sie Math.min und Math.max.

1
Femaref

Benötigt keine weitere Erklärung:

function clamp(value, min, max) {
    return Math.min(Math.max(value, min), max);
}
0
Lonely Neuron

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.

0
Rafe