- 实现智能排序:数字 -> 字母 -> 其他符号 - 添加 smartSort() 方法支持自然数值排序 - 默认启用排序功能,用户无需设置 - 支持多语言字符(中文、日文、英文等) - 添加完整的测试工具和文档 新增文件: - test_sort.html (可视化测试页面) - verify_sort.py (Python验证脚本) - verify_sort.js (Node.js验证脚本) - SORT_FEATURE.md (功能说明) - SORT_USAGE.md (使用指南) - QUICKSTART_SORT.md (快速开始) - IMPLEMENTATION_SUMMARY.md (实现总结) - CHANGELOG_SORT.md (更新日志) - UPDATE_SUMMARY.md (更新说明) 修改文件: - public/src/js/songselect.js (添加智能排序逻辑) - README.md (更新功能介绍)
125 lines
3.0 KiB
Markdown
125 lines
3.0 KiB
Markdown
# 歌曲智能排序功能说明
|
||
|
||
## 功能概述
|
||
为 Taiko Web 项目添加了智能歌曲排序功能,按照**数字、字母、其他符号(包括中文、日文等)**的顺序自动排列歌曲。
|
||
|
||
✨ **重要**:该功能已**默认启用**,用户无需任何设置。
|
||
|
||
## 排序规则
|
||
|
||
### 1. 字符类型优先级
|
||
- **数字** (0-9) - 最优先
|
||
- **英文字母** (A-Z, a-z) - 次优先
|
||
- **其他符号** (中文、日文、特殊符号等) - 最后
|
||
|
||
### 2. 同类型字符排序
|
||
- **数字**:按数值大小排序(例如:1, 2, 10, 100)
|
||
- **字母**:按字母顺序排序,不区分大小写
|
||
- **其他符号**:按 Unicode 编码排序
|
||
|
||
## 使用方法
|
||
|
||
### 默认行为
|
||
**无需任何操作!** 打开游戏后,歌曲已自动按智能顺序排列。
|
||
|
||
### 禁用排序(可选)
|
||
如果不需要排序功能:
|
||
|
||
1. 在歌曲选择界面找到 **"タイトル順で並べ替え"** 选项
|
||
2. 点击该选项
|
||
3. 输入 `false` 禁用
|
||
|
||
### localStorage 控制
|
||
也可以通过浏览器控制台手动设置:
|
||
```javascript
|
||
// 禁用排序
|
||
localStorage.setItem("titlesort", "false");
|
||
location.reload();
|
||
|
||
// 重新启用排序
|
||
localStorage.setItem("titlesort", "true");
|
||
location.reload();
|
||
```
|
||
|
||
// 禁用排序
|
||
localStorage.setItem("titlesort", "false");
|
||
```
|
||
|
||
## 排序示例
|
||
|
||
假设有以下歌曲标题:
|
||
```
|
||
未排序:
|
||
- 太鼓の達人
|
||
- Zyxwv
|
||
- 123
|
||
- abc
|
||
- 456
|
||
- *Special*
|
||
- 10
|
||
- あいうえお
|
||
- 2
|
||
- ZZZ
|
||
|
||
排序后:
|
||
- 2 (数字)
|
||
- 10 (数字)
|
||
- 123 (数字)
|
||
- 456 (数字)
|
||
- abc (字母)
|
||
- Zyxwv (字母)
|
||
- ZZZ (字母)
|
||
- *Special* (符号)
|
||
- あいうえお (日文)
|
||
- 太鼓の達人 (日文)
|
||
```
|
||
|
||
## 技术实现
|
||
|
||
### 修改文件
|
||
- `public/src/js/songselect.js`
|
||
|
||
### 核心函数
|
||
```javascript
|
||
smartSort(titleA, titleB)
|
||
```
|
||
|
||
### 实现特点
|
||
1. **字符类型识别**:通过 Unicode 编码判断字符类型
|
||
2. **自然排序**:使用 `localeCompare` 的 `numeric` 选项,确保数字按数值排序
|
||
3. **多语言支持**:支持英文、中文、日文等各种语言
|
||
4. **大小写不敏感**:字母排序时忽略大小写
|
||
|
||
## 代码变更
|
||
|
||
### 1. 调用智能排序
|
||
```javascript
|
||
const titlesort = localStorage.getItem("titlesort") ?? "false";
|
||
if (titlesort === "true") {
|
||
this.songs.sort((a, b) => this.smartSort(a.title, b.title));
|
||
}
|
||
```
|
||
|
||
### 2. 智能排序函数
|
||
添加了 `smartSort(titleA, titleB)` 方法到 `SongSelect` 类中,实现:
|
||
- 字符类型判断(数字/字母/其他)
|
||
- 按类型优先级排序
|
||
- 同类型内自然排序
|
||
|
||
## 注意事项
|
||
1. 排序功能**默认启用**,首次使用即可看到效果
|
||
2. 排序状态会保存在浏览器的 localStorage 中
|
||
3. 刷新页面后排序设置会保持
|
||
4. 排序不会影响游戏的其他功能
|
||
5. 如需恢复原始顺序,可手动禁用排序
|
||
|
||
## 兼容性
|
||
- ✅ 支持所有现代浏览器
|
||
- ✅ 兼容触摸设备
|
||
- ✅ 不影响现有功能
|
||
|
||
## 未来改进方向
|
||
- [ ] 添加更多排序选项(难度、时长等)
|
||
- [ ] 添加自定义排序规则
|
||
- [ ] 添加排序方向切换(升序/降序)
|