Skip to content

Commit 85495af

Browse files
committed
fix(site): fix version number parsing error
1 parent 6966920 commit 85495af

File tree

2 files changed

+36
-15
lines changed

2 files changed

+36
-15
lines changed

site/web/App.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ function Components() {
5656
const versions = filterVersions(Object.keys(res.versions));
5757

5858
versions.forEach((v) => {
59-
const nums = v.split('.');
60-
if (nums[0] === '0' && nums[1] < 21) return false;
61-
6259
options.unshift({ label: v, value: v.replace(/\./g, '_') });
6360
});
6461

65-
tdSelectRef.current.options = options.sort((a, b) => (semver.gt(a.label, b.label) ? -1 : 1));
62+
tdSelectRef.current.options = options;
63+
})
64+
.catch((err) => {
65+
console.error('获取版本号异常', err);
6666
});
6767
}
6868

site/web/utils.js

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)