Javascript Math Object Methods - Negative auf Null


86

In Javascript kann ich anscheinend keine Methode finden, um Negative auf Null zu setzen.

-90 wird 0
-45 wird 0
0 wird 0
90 wird 90

Gibt es so etwas? Ich habe gerade Zahlen gerundet.

Antworten:


179

Mach einfach so etwas

value = value < 0 ? 0 : value;

oder

if (value < 0) value = 0;

oder

value = Math.max(0, value);

2
Quick JSPerf zeigt Wert = Wert <0? 0: Wert; ist oben jsperf.com/negatives-to-zero
Skeep

21
Ich mag das Math.maxam meisten, weil es nur valueeinmal referenziert werden muss
Matt Fletcher

60

Ich nehme an, Sie könnten verwenden Math.max().

var num = 90;
num = Math.max(0,num); // 90

var num = -90;
num = Math.max(0,num); // 0

3
Dies sollte meiner Meinung nach die akzeptierte Antwort sein.
Ich

2
Eine Sache zu beachten ist, dass beide Math.max(0, NaN)und Math.max(0, undefined)zurückkehren, NaNso dass Sie etwas in diese Richtung tun möchten:Math.max(0, num) || 0
jwerre

7

Wenn du schlau sein willst:

num = (num + Math.abs(num)) / 2;

Ein Math.maxbedingter Operator wäre jedoch viel verständlicher.
Dies hat auch Präzisionsprobleme für große Zahlen.


4
Math.positive = function(num) {
  return Math.max(0, num);
}

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}

Null ist weder positiv noch negativ, Ihre Funktion sollte entsprechend umbenannt werden
Killy



-1

Ich glaube nicht, dass eine solche Funktion mit dem nativen Math-Objekt existiert. Sie sollten ein Skript schreiben, um die Funktion auszufüllen, wenn Sie sie verwenden müssen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.