Chcę usunąć znak liczby w kodzie JavaScript. Oto przypadki testowe, że już zbadane w jsperf (http://jsperf.com/remove-sign-from-number)Szybki i bezpieczny sposób na usunięcie znaku zapieczętowanej liczby w kodzie JavaScript
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)
Według tych badań: if(n < 0) n *= -1
wydaje się być dobrym rozwiązaniem.
Czy znasz jakiś lepszy, oszczędzający i bardziej efektywny sposób na zrobienie tego?
Edit 1: Math.sqrt
przypadek Added Nikhil, ale sqrt
jest zwykle dość powolny w większości systemów.
Edit 2: wniosek Jana do OPS bitowe może być szybszy w niektórych przypadkach, ale spowoduje również usunięcie cyfr po przecinku, a tym samym nie będzie pracować dla mnie.
Charakterystyki pracy różnią się znacznie między przeglądarkami. W SeaMonkey 'Math.abs' wyraźnie przewyższa wszystkie pozostałe. W Konquerorze, bitowe ('if (n <0) n = ~ n + 1') świeci [wszystkie warianty" && "są złe] i' Math.abs' śmierdzi. Ogólnie rzecz biorąc, "if (n <0) n * = -1" i "if (n <0) n = -n" wydają się być tymi bezpiecznymi, które nigdzie nie śmierdzą. Jednym z problemów z operatorami bitowymi jest to, że wymuszają one liczbę na 32-bitową liczbę całkowitą - jeśli 'n' wypadnie poza ten zakres, bitowa metoda wygenerowałaby śmieci. –