如何用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
相关产品推荐
相关产品推荐

