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

如何用for循环实现数组中间向两端的索引遍历(不修改原数组)

实现从数组中间交替左右遍历索引的for循环方案

原需求是模拟从数组中间开始,每次通过splice取中间元素的索引遍历顺序(以长度为8的数组为例,索引顺序为:4 3 5 2 6 1 7 0),要求不修改原数组、不生成序列数组,仅用for循环实现。

索引规律分析

这个遍历顺序的核心逻辑是:

  1. 从数组的中间索引开始(长度为n时,中间索引为Math.floor(n/2))
  2. 交替向左、向右移动索引,每次移动的步长依次递增1:先左移1位,再右移1位,接着左移2位,再右移2位……直到覆盖所有索引。

正确实现代码

基于上述规律,我们可以用for循环直接计算每次的索引:

const arrLength = 8; // 替换为你的数组实际长度
const middleIndex = Math.floor(arrLength / 2);

for (let i = 0; i < arrLength; i++) {
    const currentIndex = i % 2 === 0 
        ? middleIndex + Math.floor(i / 2) 
        : middleIndex - Math.floor((i + 1) / 2);
    // 此处可替换为实际业务操作,比如访问数组元素:yourArray[currentIndex]
    document.write(currentIndex + " ");
}

运行这段代码,输出结果为4 3 5 2 6 1 7 0,完全符合预期。

代码逻辑说明

  • 当i为偶数时(第0、2、4、6次循环):向右移动,移动距离为i/2(整数除法),所以索引为中间索引 + 移动距离
  • 当i为奇数时(第1、3、5、7次循环):向左移动,移动距离为(i+1)/2(整数除法),所以索引为中间索引 - 移动距离

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:43:27