JS中如何从指定索引开始遍历数组并获取隔位元素
实现指定起始音符的隔位遍历获取音符
针对给定的音符数组,要从指定起始音符出发,每隔一个音符取一个(步长为2),且数组循环(超出末尾回到开头),可以按以下步骤实现:
核心思路
- 定位起始音符在数组中的索引
- 从该索引开始,每次向后移动2个位置,通过取模运算实现数组的循环遍历
- 收集指定数量的结果音符
代码实现
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
相关产品推荐
相关产品推荐

