@@ -8,17 +8,38 @@ export function getRoute(list, docRoutes) {
88 return docRoutes ;
99}
1010
11- // 过滤小版本号
12- export function filterVersions ( versions = [ ] ) {
13- const versionMap = new Map ( ) ;
11+ function compareVersion ( version1 , version2 ) {
12+ const v1 = version1 . split ( '.' ) ;
13+ const v2 = version2 . split ( '.' ) ;
14+ const len = Math . max ( v1 . length , v2 . length ) ;
1415
15- versions . forEach ( ( v ) => {
16- if ( v . includes ( '-' ) ) return false ;
17- const nums = v . split ( '.' ) ;
18- versionMap . set ( `${ nums [ 0 ] } .${ nums [ 1 ] } ` , v ) ;
19- } ) ;
16+ while ( v1 . length < len ) {
17+ v1 . push ( '0' ) ;
18+ }
19+ while ( v2 . length < len ) {
20+ v2 . push ( '0' ) ;
21+ }
22+
23+ for ( let i = 0 ; i < len ; i ++ ) {
24+ const num1 = parseInt ( v1 [ i ] , 10 ) ;
25+ const num2 = parseInt ( v2 [ i ] , 10 ) ;
26+
27+ if ( num1 > num2 ) {
28+ return 1 ;
29+ }
30+ if ( num1 < num2 ) {
31+ return - 1 ;
32+ }
33+ }
34+
35+ return 0 ;
36+ }
37+
38+ function filterStableVersions ( versionList ) {
39+ return versionList . filter ( ( version ) => ! version . includes ( '-' ) ) ;
40+ }
2041
21- return [ ... versionMap . values ( ) ] . sort (
22- ( a , b ) => Number ( a . split ( '.' ) . slice ( 0 , 2 ) . join ( '.' ) ) - Number ( b . split ( '.' ) . slice ( 0 , 2 ) . join ( '.' ) ) ,
23- ) ;
42+ // 过滤小版本 + 版本号排序
43+ export function filterVersions ( versions ) {
44+ return filterStableVersions ( versions ) . sort ( compareVersion ) ;
2445}
0 commit comments