2011-07-06 24 views
3

我希望將除160之外的任何數字解析爲1,並將160解析爲0. 160必須正好解析爲1,不多於,不少於160。有人知道怎麼做這個嗎?我不想使用if或else,但使用modulus和math.abs可以。謝謝。jQuery中的1或0以下的分辨率

CLARIFICATION:沒有三元運算符,我正在尋找更多的數學運算,或者像這樣的無所事事。

+0

澄清「如果還是其他「或」條件/分支「,或者你會得到很多你不想要的答案。 –

+0

沒有任何工作,我看着使用模數和Math.abs(),不幸的是,雖然使160解析爲1是相當微不足道的,使任何數字n解析爲0與相同的算法證明具有挑戰性。 – Vap0r

回答

6

雖然不是嚴格的數學運算,但可以使用javascript Math對象的功能maxmin要做到這一點。

要獲得n解析到1 160,否則爲0,你可以使用:

var r = Math.abs(Math.max(-1, Math.min(1, n - 160))) ; 

如果你想在1和0逆轉,你可以這樣做:

var r1 = Math.abs(r - 1) ; 
+0

我實際上得到了與您的代碼相反的結果:0代表160和1。但是,在使用巧妙的行:Math.abs(r-1)之後,它按預期工作。 +1 – Ivan

+0

這正是我正在尋找的,謝謝! (側面問題:Javascript數學庫可能使用if語句,不是嗎?) – Vap0r

8

(注意,這是編輯之前)

三元操作符(這是既不if也不else;)):

var value = number === 160 ? 0 : 1; 

還沒數學,但類型轉換

var value = +(number !== 160); 

還沒數學,但布爾運算符

var value = (number !== 160) && 1 || 0; 

一個點點數學和類型轉換

var value = +(!!(160 - number)); // outer brackets can probably be omitted 

也許我應該現在就停止;)

+0

相當鬼鬼祟祟,+1 – Niklas

+0

雖然我喜歡這個答案,但我忘了指定我正在尋找更多的數學運算。儘管我很喜歡答案,所以你得到了一個贊成票:) – Vap0r

+0

這真的很整潔,如果我能+2你,我會的,但是Gus給了我更多我想找的東西,謝謝。 – Vap0r