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

如何用JavaScript For Loop打印排序数组至中间元素后反向至索引0

搞定这个升序+降序的打印需求!

嘿,我明白你想要实现的效果:先把有序数组的元素从开头升序打印到中间元素,然后从中间元素开始降序往回打印到第一个元素。咱们一步步来实现它:

第一步:确定中间元素的位置

数组的中间索引得根据长度来算,毕竟数组索引是从0开始的:

  • 如果数组长度是奇数(比如5个元素),中间索引就是Math.floor(数组长度/2),对应正中间的元素
  • 如果是偶数(比如你写的54个元素),这个方法会给你中间偏左的索引(比如54长度的话就是26,对应元素27),如果你想要中间偏右的元素,换成Math.ceil(数组长度/2)-1就行,灵活调整~

完整的代码实现

我把你的数组用更简洁的方式生成了,然后分两个循环完成需求:

// 生成1到54的有序数组(代替你手动写的长列表)
const r6 = Array.from({length: 54}, (_, index) => index + 1);

// 计算中间索引
const middleIndex = Math.floor(r6.length / 2);

// 第一部分:升序打印到中间元素
console.log("升序打印到中间元素:");
for (let i = 0; i <= middleIndex; i++) {
  console.log(r6[i]);
}

// 第二部分:从中间元素的前一位开始,降序打印回索引0
console.log("\n降序返回开头:");
for (let i = middleIndex - 1; i >= 0; i--) {
  console.log(r6[i]);
}

用单个For Loop完成(可选)

如果你不想写两个循环,也可以用一个循环搞定,通过计算当前要打印的索引实现:

const r6 = Array.from({length: 54}, (_, index) => index + 1);
const middleIndex = Math.floor(r6.length / 2);

console.log("单循环实现的结果:");
for (let i = 0; i <= middleIndex * 2; i++) {
  // 前半段用i升序,后半段计算对称索引实现降序
  const currentIndex = i <= middleIndex ? i : middleIndex * 2 - i;
  console.log(r6[currentIndex]);
}

为啥这么写?

  • Array.from能快速生成有序数组,比手动写一堆数字方便多了
  • 两个循环的逻辑很直观:先从左走到中间,再从中间往回走
  • 单循环的思路是把整个过程看成“去程+返程”,用一个循环的范围覆盖所有步骤,通过索引计算实现来回的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:17:28