2011-07-06 3 views
3

160 이외의 숫자를 1로 설정하고 160을 0으로 변환하려고합니다. 160은 정확히 1로, 더 이상은 더 이상으로 해석해서는 안됩니다. 아무도 이것을하는 방법을 아는가? if 나 else를 사용하고 싶지는 않지만 modulus와 math.abs를 사용하는 것이 좋습니다. 감사.jQuery에서 If-less 1 또는 0 해결

정리 : 삼항 연산자가 없으므로 수학적 연산이 더 필요하거나 그런 식으로 익숙하지 않은 것을 찾고 있습니다.

+0

명확히 " if 또는 else "또는"조건부/분기 ", 또는 원하지 않는 답변 **을 많이 얻을 것입니다. –

+0

아무 것도 작동하지 않았고 불행히도 Modulus와 Math.abs()를 사용하여 보았습니다. 160으로 1을 만드는 것은 매우 간단합니다. 동일한 알고리즘을 사용하여 0으로 해결되는 숫자를 만드는 것이 쉽지 않습니다. – Vap0r

답변

6

엄격한 수학 연산은 아니지만, 자바 스크립트 0을 사용할 수 있습니다. 이 작업을 수행하려면개체 기능 maxmin이 필요합니다.

160 1로 해결 n를 얻으려면, 그렇지 않으면 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

(참고,이 편집 전과)

삼항 연산자 (가도 ifelse입니다;)) :

여전히
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 +1 – Niklas

+0

나는이 대답을 좋아하지만, 나는 수학 연산을 더 찾고 있다고 지정하는 것을 잊었다. 나는 대답을 좋아한다. 그래서 당신은 upvote를 얻는다. – Vap0r

+0

그것은 정말로 산뜻하다, 내가 +2 할 수 있으면, Gus는 내가 뭘 찾았는지 더 많이 주었다. 고마워. – Vap0r

관련 문제