Ich möchte das Zeichen einer Zahl in JavaScript entfernen. Hier sind die Testfälle, die ich bereits bei jsperf geprüft (http://jsperf.com/remove-sign-from-number)Schnelle und sichere Möglichkeit, das Zeichen einer gesengten Zahl in JavaScript zu entfernen
if(n < 0) n *= -1;
if(n < 0) n = -n;
n = Math.abs(n)
(n < 0) && (n *= -1)
(n < 0) && (n = -n)
n = Math.sqrt(n*n)
Nach diesen Tests: if(n < 0) n *= -1
scheint eine gute Lösung zu sein.
Kennen Sie einen besseren, sichereren und effizienteren Weg, dies zu tun?
Edit 1: Added Nikhils Math.sqrt
Fall, aber sqrt
ist in der Regel ziemlich langsam in den meisten Systemen.
Edit 2: Jan's Vorschlag für bitweise Ops kann in einigen Fällen schneller sein, wird aber auch Nachkommastellen entfernen und wird daher für mich nicht funktionieren.
Leistungsmerkmale sind sehr unterschiedlich zwischen den Browsern. Auf SeaMonkey übertrifft 'Math.abs' deutlich alle anderen. Auf Konqueror leuchtet bitweise ('if (n <0) n = ~ n + 1 ') [die' && 'Varianten sind alle schlecht] und' Math.abs' stinkt. Alles in allem scheinen 'if (n <0) n * = -1 'und' if (n <0) n = -n' die sicheren zu sein, die nirgendwohin stinken. Ein Problem bei bitweisen Operatoren besteht darin, dass sie die Zahl in eine 32-Bit-Ganzzahl zwingen. Wenn "n" außerhalb dieses Bereichs liegt, würde der bitweise Weg Müll erzeugen. –