Files
taiko-web/SORT_FEATURE.md
AnthonyDuan 25c26b2b2e feat: 添加歌曲智能排序功能(默认启用)
- 实现智能排序:数字 -> 字母 -> 其他符号
- 添加 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 (更新功能介绍)
2025-11-15 15:59:08 +08:00

3.0 KiB
Raw Permalink Blame History

歌曲智能排序功能说明

功能概述

为 Taiko Web 项目添加了智能歌曲排序功能,按照**数字、字母、其他符号(包括中文、日文等)**的顺序自动排列歌曲。

重要:该功能已默认启用,用户无需任何设置。

排序规则

1. 字符类型优先级

  • 数字 (0-9) - 最优先
  • 英文字母 (A-Z, a-z) - 次优先
  • 其他符号 (中文、日文、特殊符号等) - 最后

2. 同类型字符排序

  • 数字按数值大小排序例如1, 2, 10, 100
  • 字母:按字母顺序排序,不区分大小写
  • 其他符号:按 Unicode 编码排序

使用方法

默认行为

无需任何操作! 打开游戏后,歌曲已自动按智能顺序排列。

禁用排序(可选)

如果不需要排序功能:

  1. 在歌曲选择界面找到 "タイトル順で並べ替え" 选项
  2. 点击该选项
  3. 输入 false 禁用

localStorage 控制

也可以通过浏览器控制台手动设置:

// 禁用排序
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. 自然排序:使用 localeComparenumeric 选项,确保数字按数值排序
  3. 多语言支持:支持英文、中文、日文等各种语言
  4. 大小写不敏感:字母排序时忽略大小写

代码变更

1. 调用智能排序

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. 如需恢复原始顺序,可手动禁用排序

兼容性

  • 支持所有现代浏览器
  • 兼容触摸设备
  • 不影响现有功能

未来改进方向

  • 添加更多排序选项(难度、时长等)
  • 添加自定义排序规则
  • 添加排序方向切换(升序/降序)