如何创建按语种(中/法)与难度分级的歌曲分类多维数组?
完善歌曲分类多维数组的方案
嘿,你的多维数组原型思路已经很靠谱了!不过直接用数字索引不仅容易记混,后续维护也容易出错。我来帮你优化一下,让按类别输出歌曲的功能更直观、更健壮~
1. 给索引“起名字”,告别硬编码
首先用常量定义语言和难度对应的索引,这样代码可读性拉满,再也不用死记[0][1]对应啥分类了:
// 定义语言索引常量 const LANG_CHINESE = 0; const LANG_FRENCH = 1; // 定义难度索引常量 const DIFF_EASY = 0; const DIFF_MEDIUM = 1; const DIFF_ADVANCED = 2;
2. 填充真实歌曲数据的多维数组
把原型里的占位字母替换成实际歌曲名,结构保持一致但内容更贴合你的需求:
const songLibrary = [ // 中文歌曲组:[入门级, 中等难度, 高级难度] [ ["小星星", "两只老虎", "数鸭子"], ["成都", "遇见", "小幸运"], ["青花瓷", "兰亭序", "千里之外"] ], // 法语歌曲组:[入门级, 中等难度, 高级难度] [ ["Frère Jacques", "Alouette", "Bonjour"], ["La Vie en Rose", "Je l'aime à mourir", "Pour que tu m'aimes encore"], ["L'hymne à l'amour", "Non, je ne regrette rien", "La Mer"] ] ];
3. 封装分类输出的函数
写一个简单的函数,传入语言和难度的常量就能直接返回对应类别的歌曲,还加了小判断处理无效输入:
function getSongs(lang, diff) { // 先校验输入的索引是否合法 if (lang !== LANG_CHINESE && lang !== LANG_FRENCH) { return "错误:请传入合法的语言索引(LANG_CHINESE 或 LANG_FRENCH)"; } if (diff < 0 || diff > 2) { return "错误:请传入合法的难度索引(DIFF_EASY/DIFF_MEDIUM/DIFF_ADVANCED)"; } return songLibrary[lang][diff]; }
4. 调用示例
现在你可以轻松按类别获取歌曲了,比如:
// 获取中等难度中文歌曲 console.log(getSongs(LANG_CHINESE, DIFF_MEDIUM)); // 输出:["成都", "遇见", "小幸运"] // 获取高级难度法语歌曲 console.log(getSongs(LANG_FRENCH, DIFF_ADVANCED)); // 输出:["L'hymne à l'amour", "Non, je ne regrette rien", "La Mer"] // 获取入门级中文歌曲 console.log(getSongs(LANG_CHINESE, DIFF_EASY)); // 输出:["小星星", "两只老虎", "数鸭子"]
这样改造之后,代码不仅更易读、易维护,后续添加新语言或新难度等级时,只需要修改常量和数组结构,函数逻辑几乎不用动~
内容的提问来源于stack exchange,提问作者user9323924
相关产品推荐
相关产品推荐

