如何使用javascript將-1轉換爲1?如何使用javascript將-1轉換爲1?
var count = -1; //or any other number -2 -3 -4 -5 ...
或
var count = 1; //or any other number 2 3 4 5 ...
結果應該是
var count = 1; //or any other number 2 3 4 5 ...
如何使用javascript將-1轉換爲1?如何使用javascript將-1轉換爲1?
var count = -1; //or any other number -2 -3 -4 -5 ...
或
var count = 1; //or any other number 2 3 4 5 ...
結果應該是
var count = 1; //or any other number 2 3 4 5 ...
count = Math.abs(count)
// will give you the positive value of any negative number
ABS功能接通的所有數字陽性:即Math.abs(-1)= 1
替代方法(可能會更快,然後Math.abs
,未經測試):
count = -5;
alert((count^(count >> 31)) - (count >> 31));
請注意,javascript中的按位操作始終爲32位。
如果感興趣的數量爲input
...除了Math.abs(input)
....
var count = (input < 0 ? -input : input);
(編輯:正如一些人士指出-input
比快-1 * input
)
The以上使用了Javascript conditional operator。這是唯一的三元操作符(帶三個操作數)。
的語法是:
condition ? expr1 : expr2
如果condition
是真實的,expr1
進行評估,如果它的費爾斯expr2
進行評估。
如果不使用Math.abs(最簡潔的方式來顯示你想要做什麼,也是最快的FF3.6),試試'v <0? v * -1:v',它比* -1快。 – some 2010-10-19 17:31:38
@some - 我有什麼......輸入<0?輸入* -1:輸入'不同於------------------------'v <0? v * -1:v'? – 2010-10-19 17:34:16
對不起,應該是'v <0? -v:v'。這是Opera 10.63,Chrome 6.3和IE8中速度最快的一款。 'Math.abs(v)'是Firefox 3.6中最快的。 – some 2010-10-19 17:39:03
這裏是一個與這個更關注下面的哪個答案更快的問題:http://stackoverflow.com/questions/441893/in-javascript-which-is-faster-math-absvalue-or -value-1 – lock 2010-09-19 23:04:03