2013-06-06 2 views
1

자바 스크립트에서 자바 스크립트에 파일 버전을 나타내는 숫자가 포함 된 두 개의 문자열이 있습니다.XX.XX.XXXX.XXXX의 형식으로 숫자가 포함 된 자바 스크립트 문자열을 비교하는 방법

즉이

var str1 = "11.11.1111.1111" 
var str2 = "11.22.3333.5555" 

어떻게 그들 사이의 숫자 비교를 수행 할 수 있습니다? 내가 확인하고 싶습니다 str1 > str2

+0

하면 될까요'하면'1.0.0.0'와'2.0.0.0' 사이 10.0.0.0' 종류? 'str1> str2'을 그냥 수행하지 않으면 –

+0

문자열이 필수 유형인지 여부를 확인한 다음 비교 연산을 수행해야합니다. – AurA

답변

5

str1과 str2가 동일한 길이와 형식으로되어있는 한, str1 > str2 만 있으면됩니다. 문자열 비교는 사전 식 (두 문자의 첫 문자와 두 문자의 두 문자를 비교하고 첫 번째 차이의 값을 반환), 두 개의 동일한 길이의 숫자/숫자와 같은 문자열을 사용하여 원하는 것을 정확하게 제공합니다.

동일하지 않을 경우 ., converting each string part to int 번으로 시도해보고 차이점을 찾을 때까지 하나씩 차례로 비교해보십시오.

+0

"나누기를 시도합니다. 각 부분을 캐스팅하여 int로 변환 한 다음 비교합니다 당신이 차이를 찾을 때까지 하나씩 int - wise 하나씩 - lib가 있습니까? –

+0

@ Jan Dvorak 자바 스크립트의 내장 함수입니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split 문자열을 int로 캐스팅하려면 : http://stackoverflow.com/questions/1133770/how-do-i -convert-a-string-into-an-as-as-javascript – Patashu

+0

제 말은 이미 "모두 나누기"를하는 라이브러리가 있다는 것입니다. 각각의 부분을 캐스팅하여 int로 돌려주고 int 와이즈를 비교합니다 한 번에 하나씩 차이를 찾을 때까지 하나씩? –

1

당신이 갈 수 :

var str1 = '11.11.1111.1111' 
    ,str2 = '11.22.3333.5555' 
    ,compare = str1.split('.') 
       .map(function(a) { 
        return +a > +(this.splice(0,1)); 
       }, 
       str2.split('.')) 
       .reduce(function(a,b){return a||b;}); 
//=> compare now: false 
+0

귀하의 권리, 그것을 통해 생각하지 않았다 – KooiInc

+0

대답을 다른 접근 방식으로 바 꾸었습니다. – KooiInc

+0

어떻게 작동해야하는지 알 수 없습니다. 'reduce' 단계 뒤에있는 의도는 무엇입니까? 당신은 그들이 서로 다른 가장 중요한 버전에 대해서만 언급해야하며, 그들이 다른 곳마다 계산하지 않아야합니다. 다른 주장에 대해서도 마찬가지입니다. reduce step iterator를'function (a, b) {return a || b}'로 바꾸면 원하는대로 동작 할 것입니다. 또한 '+ a'와 반대로'+ (+ a)'의 점은 무엇입니까? –

관련 문제