You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建按语种(中/法)与难度分级的歌曲分类多维数组?

完善歌曲分类多维数组的方案

嘿,你的多维数组原型思路已经很靠谱了!不过直接用数字索引不仅容易记混,后续维护也容易出错。我来帮你优化一下,让按类别输出歌曲的功能更直观、更健壮~

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:01:19