Skip to content

Commit c656a55

Browse files
committed
sort data and update sort script
1 parent c2f2500 commit c656a55

File tree

3 files changed

+68
-16
lines changed

3 files changed

+68
-16
lines changed

assets/img/何慷.JPG

-52.1 KB
Binary file not shown.

assets/js/team-data.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,12 @@ const teamData = {
146146

147147
// 博士研究生
148148
phdStudents: [
149-
{ id: 'zhiyuan-zeng', name: { zh: '曾致远', en: 'Zhiyuan Zeng' }, photo: 'assets/img/曾致远.jpg', homepage: 'https://zhiyuanzeng.github.io/' },
150149
{ id: 'chen-jia', name: { zh: '陈嘉', en: 'Jia Chen' }, photo: 'assets/img/陈嘉.PNG' },
151150
{ id: 'ke-chen', name: { zh: '陈可', en: 'Ke Chen' }, photo: 'assets/img/陈可.JPEG', homepage: 'https://github.com/jingyijun' },
152151
{ id: 'qian-chen', name: { zh: '陈千', en: 'Qian Chen' }, photo: 'assets/img/陈千.jpg', homepage: 'https://qq31415926.github.io/cq.github.io/' },
153152
{ id: 'jijun-cheng', name: { zh: '程纪钧', en: 'Jijun Cheng' }, photo: 'assets/img/程纪钧.png' },
154153
{ id: 'qinyuan-cheng', name: { zh: '程沁源', en: 'Qinyuan Cheng' }, photo: 'assets/img/程沁源.jpg', homepage: 'https://xiami2019.github.io/' },
155-
{ id: 'junqi-dai', name: { zh: '代俊奇', en: 'Roger Dai' }, photo: 'assets/img/代俊奇.jpg' },
154+
{ id: 'junqi-dai', name: { zh: '代俊奇', en: 'Junqi Dai' }, photo: 'assets/img/代俊奇.jpg' },
156155
{ id: 'shicheng-fang', name: { zh: '方世成', en: 'Shicheng Fang' }, photo: 'assets/img/方世成.png' },
157156
{ id: 'zhaoye-fei', name: { zh: '费朝烨', en: 'Zhaoye Fei' }, photo: 'assets/img/费朝烨.jpeg', homepage: 'https://ngc7292.github.io/' },
158157
{ id: 'senyu-fei', name: { zh: '费森俞', en: 'Senyu Fei' }, photo: 'assets/img/费森俞.JPEG' },
@@ -198,6 +197,7 @@ const teamData = {
198197
{ id: 'linqi-yin', name: { zh: '殷林琪', en: 'Linqi Yin' }, photo: 'assets/img/殷林琪.JPEG' },
199198
{ id: 'zhangyue-yin', name: { zh: '印张悦', en: 'Zhangyue Yin' }, photo: 'assets/img/印张悦.jpg' },
200199
{ id: 'kang-yu', name: { zh: '于康', en: 'Kang Yu' }, photo: 'assets/img/于康.jpg', homepage: 'https://kaysonyu.github.io' },
200+
{ id: 'zhiyuan-zeng', name: { zh: '曾致远', en: 'Zhiyuan Zeng' }, photo: 'assets/img/曾致远.jpg', homepage: 'https://zhiyuanzeng.github.io/' },
201201
{ id: 'jun-zhan', name: { zh: '詹俊', en: 'Jun Zhan' }, photo: 'assets/img/詹俊.JPEG', homepage: 'https://junzhan2000.github.io' },
202202
{ id: 'haowei-zhang', name: { zh: '张浩威', en: 'Haowei Zhang' }, photo: 'assets/img/张浩威.png', homepage: 'https://haowei-freesky.github.io/' },
203203
{ id: 'haozhe-zhang', name: { zh: '张浩哲', en: 'Haozhe Zhang' }, photo: 'assets/img/张浩哲.png' },
@@ -220,7 +220,7 @@ const teamData = {
220220
{ id: 'yiran-guo', name: { zh: '郭一然', en: 'Yiran Guo' }, photo: 'assets/img/郭一然.jpg' },
221221
{ id: 'kexin-huang', name: { zh: '黄可欣', en: 'Kexin Huang' }, photo: 'assets/img/黄可欣.jpg', homepage: 'https://kexinhuang19.github.io/' },
222222
{ id: 'mianqiu-huang', name: { zh: '黄绵秋', en: 'Mianqiu Huang' }, photo: 'assets/img/黄绵秋.jpg' },
223-
{ id: 'ji-li', name: { zh: '纪力', en: 'Jili' }, photo: 'assets/img/纪力.JPEG' },
223+
{ id: 'li-ji', name: { zh: '纪力', en: 'Li Ji' }, photo: 'assets/img/纪力.JPEG' },
224224
{ id: 'yaozhou-jiang', name: { zh: '蒋燿州', en: 'Yaozhou Jiang' }, photo: 'assets/img/蒋燿州 .jpg' },
225225
{ id: 'bowen-li', name: { zh: '李博文', en: 'Bowen Li' }, photo: 'assets/img/李博文.jpg' },
226226
{ id: 'bufan-li', name: { zh: '李不凡', en: 'Bufan Li' }, photo: 'assets/img/李不凡.jpg' },
@@ -238,12 +238,12 @@ const teamData = {
238238
{ id: 'qifeng-wu', name: { zh: '吴奇峰', en: 'Qifeng Wu' }, photo: 'assets/img/吴奇峰.jpg' },
239239
{ id: 'shuhao-xing', name: { zh: '邢书豪', en: 'Shuhao Xing' }, photo: 'assets/img/邢书豪.jpg' },
240240
{ id: 'zhe-xu', name: { zh: '徐哲', en: 'Zhe Xu' }, photo: 'assets/img/徐哲.jpg', homepage: 'https://phospheneser.github.io/' },
241-
{ id: 'jie-yang', name: { zh: '杨捷', en: 'Yang Jie' }, photo: 'assets/img/杨捷.jpg', homepage: 'https://github.com/red-fox-yj' },
241+
{ id: 'jie-yang', name: { zh: '杨捷', en: 'Jie Yang' }, photo: 'assets/img/杨捷.jpg', homepage: 'https://github.com/red-fox-yj' },
242242
{ id: 'jiasheng-ye', name: { zh: '叶家升', en: 'Jiasheng Ye' }, photo: 'assets/img/叶家升.jpg' },
243243
{ id: 'donghua-yu', name: { zh: '余东桦', en: 'Donghua Yu' }, photo: 'assets/img/余东桦.jpg' },
244244
{ id: 'xiaopeng-yu', name: { zh: '余晓鹏', en: 'Xiaopeng Yu' }, photo: 'assets/img/余晓鹏.jpg' },
245245
{ id: 'zhen-yu', name: { zh: '余镇', en: 'Zhen Yu' }, photo: 'assets/img/余镇.JPEG' },
246-
{ id: 'fengye-yuan', name: { zh: '袁枫烨', en: 'Yuan Fengye' }, photo: 'assets/img/袁枫烨.jpg' },
246+
{ id: 'fengye-yuan', name: { zh: '袁枫烨', en: 'Fengye Yuan' }, photo: 'assets/img/袁枫烨.jpg' },
247247
{ id: 'shiduo-zhang', name: { zh: '张世铎', en: 'Shiduo Zhang' }, photo: 'assets/img/张世铎.jpg', homepage: 'https://shiduo-zhang.github.io/' },
248248
{ id: 'yuqian-zhang', name: { zh: '张羽乾', en: 'Yuqian Zhang' }, photo: 'assets/img/张羽乾.JPEG' },
249249
{ id: 'xingjian-zhao', name: { zh: '赵行健', en: 'Xingjian Zhao' }, photo: 'assets/img/赵行健.jpg', homepage: 'https://github.com/singularity-s0' },
@@ -260,13 +260,12 @@ const teamData = {
260260
// 本科生
261261
undergraduates: [
262262
{ id: 'jikun-cai', name: { zh: '蔡纪坤', en: 'Jikun Cai' }, photo: 'assets/img/蔡纪坤.JPEG' },
263-
{ id: 'huazheng-zeng', name: { zh: '曾华正', en: 'Huazheng Zeng' }, photo: 'assets/img/曾华正.jpg', homepage: 'https://huazzeng.github.io/' },
264263
{ id: 'bowen-chen', name: { zh: '陈博闻', en: 'Bowen Chen' }, photo: 'assets/img/陈博闻.jpg', homepage: 'https://stivine.github.io/about' },
265264
{ id: 'kuangwei-chen', name: { zh: '陈匡巍', en: 'Kuangwei Chen' }, photo: 'assets/img/陈匡巍.jpg' },
266265
{ id: 'zihao-dai', name: { zh: '戴子皓', en: 'Zihao Dai' }, photo: 'assets/img/戴子皓.jpg' },
267266
{ id: 'tingshuo-fan', name: { zh: '范庭朔', en: 'Tingshuo Fan' }, photo: 'assets/img/范庭朔.png', homepage: 'https://survivor613.github.io/' },
268267
{ id: 'siyang-he', name: { zh: '何思洋', en: 'Siyang He' }, photo: 'assets/img/何思洋.jpg' },
269-
{ id: 'chen-hu', name: { zh: '胡宸', en: 'Hu Chen' }, photo: 'assets/img/胡宸.jpg' },
268+
{ id: 'chen-hu', name: { zh: '胡宸', en: 'Chen Hu' }, photo: 'assets/img/胡宸.jpg' },
270269
{ id: 'luozhijie-jin', name: { zh: '金罗智杰', en: 'Luozhijie Jin' }, photo: 'assets/img/金罗智杰.png' },
271270
{ id: 'changsong-li', name: { zh: '李畅松', en: 'Changsong Li' }, photo: 'assets/img/李畅松.jpg' },
272271
{ id: 'hangcheng-li', name: { zh: '李航成', en: 'Hangcheng Li' }, photo: 'assets/img/李航成.jpg', homepage: 'https://github.com/lkdhy' },
@@ -294,6 +293,7 @@ const teamData = {
294293
{ id: 'chen-yang', name: { zh: '杨晨', en: 'Chen Yang' }, photo: 'assets/img/杨晨.jpg' },
295294
{ id: 'shudong-yang', name: { zh: '杨枢栋', en: 'Shudong Yang' }, photo: 'assets/img/杨枢栋.jpg', homepage: 'https://github.com/luppppy' },
296295
{ id: 'yongzhuo-yang', name: { zh: '杨永卓', en: 'Yongzhuo Yang' }, photo: 'assets/img/杨永卓.jpg', homepage: 'https://github.com/yatao-zhuozhuo' },
296+
{ id: 'huazheng-zeng', name: { zh: '曾华正', en: 'Huazheng Zeng' }, photo: 'assets/img/曾华正.jpg', homepage: 'https://huazzeng.github.io/' },
297297
{ id: 'junpeng-zhang', name: { zh: '张俊鹏', en: 'Junpeng Zhang' }, photo: 'assets/img/张俊鹏.jpg', homepage: 'https://github.com/JunpengZZhang' },
298298
{ id: 'chengyang-zhu', name: { zh: '朱程炀', en: 'Chengyang Zhu' }, photo: 'assets/img/朱程炀.png', homepage: 'https://github.com/Zecyel' },
299299
{ id: 'jingxuan-zuo', name: { zh: '左景萱', en: 'Jingxuan Zuo' }, photo: 'assets/img/左景萱.jpg' }

sort-students.js

Lines changed: 61 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,49 @@
1+
/**
2+
* 团队成员和校友列表自动排序脚本
3+
* =====================================
4+
*
5+
* 功能说明:
6+
* 本脚本用于自动对 team-data.js 文件中的所有学生和校友列表进行排序,
7+
* 确保团队成员信息按照统一的规则整齐排列。
8+
*
9+
* 排序规则:
10+
* - 按英文姓氏(Last Name)的字母顺序排序
11+
* - 英文名格式为 "名 姓"(如 "Jia Chen"),提取最后一个单词作为姓氏
12+
* - 同姓氏的成员按照名字(First Name)自然排序
13+
*
14+
* 处理的列表:
15+
* 1. 在校学生:
16+
* - phdStudents (博士研究生)
17+
* - masterStudents (硕士研究生)
18+
* - undergraduates (本科生)
19+
* - visitingStudents (访问学生)
20+
*
21+
* 2. 校友:
22+
* - alumniData.phd (博士生校友)
23+
* - alumniData.masters (硕士生校友)
24+
* - alumniData.undergrad (本科生校友)
25+
* - alumniData.visiting (访问学生校友)
26+
*
27+
* 自动清理:
28+
* - 删除数组最后一项和闭合括号之间的多余空行
29+
* - 清理连续3个或以上的空行(替换为2个空行)
30+
* - 确保文件末尾只有一个换行符
31+
*
32+
* 使用方法:
33+
* ```bash
34+
* node sort-students.js
35+
* ```
36+
*
37+
* 注意事项:
38+
* 1. 运行前请确保 team-data.js 文件格式正确
39+
* 2. 脚本会直接修改 team-data.js 文件,建议先提交 Git 或做好备份
40+
* 3. 脚本是幂等的,可以安全地多次运行
41+
* 4. 不会丢失任何数据,包括 homepage 链接等可选字段
42+
*
43+
* 作者:OpenMOSS Team
44+
* 最后更新:2025-11-22
45+
*/
46+
147
// 自动排序并替换博士生、硕士生、本科生和校友列表的脚本
248
const fs = require('fs');
349
const path = require('path');
@@ -107,15 +153,21 @@ console.log(`找到 ${alumniMaster.length} 个硕士生校友`);
107153
console.log(`找到 ${alumniUndergrad.length} 个本科生校友`);
108154
console.log(`找到 ${alumniVisiting.length} 个访问学生校友`);
109155

110-
// 按中文名拼音字典序排序
111-
phdStudents.sort((a, b) => a.nameZh.localeCompare(b.nameZh, 'zh-CN'));
112-
masterStudents.sort((a, b) => a.nameZh.localeCompare(b.nameZh, 'zh-CN'));
113-
undergradStudents.sort((a, b) => a.nameZh.localeCompare(b.nameZh, 'zh-CN'));
114-
visitingStudents.sort((a, b) => a.nameZh.localeCompare(b.nameZh, 'zh-CN'));
115-
alumniPhd.sort((a, b) => a.nameZh.localeCompare(b.nameZh, 'zh-CN'));
116-
alumniMaster.sort((a, b) => a.nameZh.localeCompare(b.nameZh, 'zh-CN'));
117-
alumniUndergrad.sort((a, b) => a.nameZh.localeCompare(b.nameZh, 'zh-CN'));
118-
alumniVisiting.sort((a, b) => a.nameZh.localeCompare(b.nameZh, 'zh-CN'));
156+
// 提取英文名的姓氏(最后一个单词)
157+
function getLastName(fullName) {
158+
const parts = fullName.trim().split(/\s+/);
159+
return parts[parts.length - 1];
160+
}
161+
162+
// 按英文姓氏字典序排序
163+
phdStudents.sort((a, b) => getLastName(a.nameEn).localeCompare(getLastName(b.nameEn)));
164+
masterStudents.sort((a, b) => getLastName(a.nameEn).localeCompare(getLastName(b.nameEn)));
165+
undergradStudents.sort((a, b) => getLastName(a.nameEn).localeCompare(getLastName(b.nameEn)));
166+
visitingStudents.sort((a, b) => getLastName(a.nameEn).localeCompare(getLastName(b.nameEn)));
167+
alumniPhd.sort((a, b) => getLastName(a.nameEn).localeCompare(getLastName(b.nameEn)));
168+
alumniMaster.sort((a, b) => getLastName(a.nameEn).localeCompare(getLastName(b.nameEn)));
169+
alumniUndergrad.sort((a, b) => getLastName(a.nameEn).localeCompare(getLastName(b.nameEn)));
170+
alumniVisiting.sort((a, b) => getLastName(a.nameEn).localeCompare(getLastName(b.nameEn)));
119171

120172
// 生成排序后的代码
121173
const phdList = phdStudents.map((student, index) => {

0 commit comments

Comments
 (0)