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

JavaScript如何通过变量按名称调用多个数组中的某一个?

解决方案
  • 核心思路:将所有音阶数组存入一个映射对象,用音阶名称作为对象的键,这样就能通过字符串变量直接获取对应数组,彻底避免大量if判断。

修改后的代码示例:

const notes = ['A','A#','B','C','C#','D','D#','E','F','F#','G','G#','A','A#','B','C','C#','D','D#','E','F','F#','G','G#','A'];
// 把所有音阶数组统一放到映射对象中
const scaleMap = {
  minor: [0,2,3,5,7,8,10,12],
  major: [0,2,4,5,7,9,11,12]
  // 后续新增音阶直接在这里添加键值对即可,比如 dorian: [0,2,3,5,7,9,10,12]
};

let keyRoot = 5;
let keyScale = 'minor';

let output = "";
// 通过字符串变量直接从映射对象中获取目标音阶数组
const targetScale = scaleMap[keyScale];
for(let i=0; i<8; i++){
     let songKey = keyRoot -1 + targetScale[i]
     output += notes[songKey] + ' '
}
console.log(output);
  • 扩展性说明:后续新增任何音阶,只需要在scaleMap对象里添加对应的键值对,不需要改动循环逻辑部分,代码维护成本极低。

内容的提问来源于stack exchange,提问作者moe_reezy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:43:12