リビジョン | 57db8e7e16caced76c311d519ef250ae9100df63 (tree) |
---|---|
日時 | 2016-02-10 16:59:11 |
作者 | itozyun <itozyun@user...> |
コミッター | itozyun |
forget to commit.
@@ -0,0 +1,38 @@ | ||
1 | +/** | |
2 | + * Number に関する関数を集めたものです。 | |
3 | + * @namespace X.Number | |
4 | + * @alias X.Number | |
5 | + */ | |
6 | +X[ 'Number' ] = { | |
7 | + 'conpareVersion' : X_Number_conpareVersion | |
8 | +}; | |
9 | + | |
10 | +/** | |
11 | + * X.X.X という形式のバージョン文字列同氏の比較 <br> | |
12 | + * -1 v1 < v2<br> | |
13 | + * 0 v1 = v2<br> | |
14 | + * 1 v1 > v2 | |
15 | + * @alias X.Number.conpareVersion | |
16 | + * @param {string} v1 '1.12.20151114' バージョン文字列。 | |
17 | + * @param {string} v2 | |
18 | + * @return {number} 比較結果 | |
19 | + */ | |
20 | + function X_Number_conpareVersion( v1, v2 ){ | |
21 | + var i = 0, | |
22 | + l, n1, n2; | |
23 | + | |
24 | + v1 = v1.split( '.' ); | |
25 | + v2 = v2.split( '.' ); | |
26 | + | |
27 | + l = Math.min( v1.length, v2.length ); | |
28 | + | |
29 | + for( ; i < l; ++i ){ | |
30 | + n1 = parseFloat( v1[ i ] ); | |
31 | + n2 = parseFloat( v2[ i ] ); | |
32 | + if( n1 !== n2 ){ | |
33 | + return n1 > n2 ? 1 : -1; | |
34 | + }; | |
35 | + }; | |
36 | + if( v1.length === v2.length ) return 0; | |
37 | + return v1.length > v2.length ? 1 : -1; | |
38 | +}; |