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

JS中如何从指定索引开始遍历数组并获取隔位元素

实现指定起始音符的隔位遍历获取音符

针对给定的音符数组,要从指定起始音符出发,每隔一个音符取一个(步长为2),且数组循环(超出末尾回到开头),可以按以下步骤实现:

核心思路

  1. 定位起始音符在数组中的索引
  2. 从该索引开始,每次向后移动2个位置,通过取模运算实现数组的循环遍历
  3. 收集指定数量的结果音符

代码实现

const notes = ['c','d','e','f','g','a','b'];
const startNote = 'f'; // 可替换为任意目标起始音符
const step = 2; // 隔一个的步长
const targetCount = 3; // 需要获取的音符数量

// 获取起始索引,兼容大小写输入
const startIndex = notes.indexOf(startNote.toLowerCase());

if (startIndex === -1) {
  console.error('输入的起始音符不在数组中');
} else {
  const result = [];
  let currentIdx = startIndex;
  
  for (let i = 0; i < targetCount; i++) {
    result.push(notes[currentIdx]);
    // 计算下一个索引,取模实现循环
    currentIdx = (currentIdx + step) % notes.length;
  }
  
  console.log(result); // 输出: ['f', 'a', 'c']
}

关键细节说明

  • indexOf() 用于快速定位起始音符的位置,转小写处理是为了避免大小写差异导致的匹配失败
  • 取模运算 (currentIdx + step) % notes.length 是实现循环遍历的核心:当索引超出数组长度时,会自动从数组开头重新计数(比如从索引5的'a'加2得到7,7%7=0,对应数组第一个元素'c')
  • 可通过调整targetCount控制最终获取的音符数量,比如设为4会得到['f','a','c','e']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:31:04