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

如何在JavaScript中实现数组首尾对应元素交换?

问题分析与解决

你的代码运行后数组异常的核心问题是逻辑顺序错误:一边输入数组元素一边执行交换操作,而且初始化b时数组为空,vetor.length-1等于-1,直接导致刚输入的元素被undefined覆盖,最终数组内容异常。

正确实现思路

  1. 先完成所有元素的收集,把数组填满;
  2. 再单独执行首尾交换逻辑,循环只需跑数组长度的一半(避免重复交换)。

修正后的代码

// 第一步:收集所有20个元素
var vetor = [];
for (var i = 0; i < 20; i++) {
    vetor[i] = Number(prompt("Digite um número: " + i));
}

// 第二步:执行首尾对应交换
var temp;
// 循环到数组中间即可,避免重复交换同一对元素
for (var i = 0; i < vetor.length / 2; i++) {
    // 计算当前索引对应的末尾配对索引
    var endIndex = vetor.length - 1 - i;
    // 交换首尾元素
    temp = vetor[i];
    vetor[i] = vetor[endIndex];
    vetor[endIndex] = temp;
}

alert(vetor);

关键细节说明

  • 拆分操作阶段:输入元素和交换逻辑要分开,输入阶段只负责把用户输入的数值存入数组;
  • 控制交换次数:比如长度为7的数组,只需要交换前3对(索引0和6、1和5、2和4),中间的索引3无需变动,和你给出的示例逻辑一致;
  • 动态计算配对索引:vetor.length -1 -i能精准匹配当前索引对应的首尾位置,避免初始化时的长度错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:39:52