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

JS中数组索引超出末尾时如何自动回到开头取值?

解决JS数组索引超出后自动从头计数的方案

你需要使用取模(%)运算对计算后的索引做归一化处理,当索引超出数组长度时,取模运算会自动返回绕回数组开头后的合法索引。

修改后的代码如下:

const musicNotes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];

// 普通函数写法
function getThirdDegreeNote(tonalityNote) {
    const tonalityNoteIndex = musicNotes.indexOf(tonalityNote);
    // 核心逻辑:计算后的索引对数组长度取模,实现自动循环
    const targetIndex = (tonalityNoteIndex + 4) % musicNotes.length;
    return musicNotes[targetIndex];
}

如果你的getThirdDegreeNote是类内部的方法,只需要替换原方法内的索引计算和返回逻辑即可,方法定义部分不需要改动。


效果验证

当tonalityNote为B时,它在数组中的索引为11:

  • 计算偏移后的值:11 + 4 = 15
  • 对数组长度12取模:15 % 12 = 3
  • 数组索引3对应的元素为D#,完全符合需求。

补充说明

该写法通用性很强,后续如果调整偏移量、或者修改musicNotes数组长度,都不需要改动核心逻辑。如果你的场景存在负偏移(比如往前数音符)的需求,可以把索引计算逻辑改为(tonalityNoteIndex + 偏移量 + musicNotes.length) % musicNotes.length,避免出现负索引导致的异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:18:03