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

JavaScript中实现奇数长度数组中间元素替换为"Hi"的方法

解决方法

你的代码已经走对了第一步,但有两个关键问题需要修正:

  • 你获取的是中间元素的值,而不是它的索引,没法定位替换位置
  • 奇数长度数组的分支没有返回处理后的数组,会导致函数返回undefined

以下是修正后的完整代码,同时兼顾了不修改原数组的最佳实践:

function hiInTheMiddle(arry) {
  // 偶数长度数组直接返回原数组的副本(避免修改原数组的副作用)
  if (arry.length % 2 === 0) {
    return [...arry];
  }
  // 创建原数组的副本,避免修改原数组
  const modifiedArray = [...arry];
  // 计算中间元素的索引,两种写法等价,选你习惯的即可
  // const middleIndex = Math.floor((arry.length - 1) / 2);
  const middleIndex = Math.floor(arry.length / 2);
  // 替换中间元素为"Hi"
  modifiedArray[middleIndex] = 'Hi';
  // 返回修改后的数组
  return modifiedArray;
}

关键细节说明

  • 为什么要创建数组副本?:如果直接修改原数组,外部调用这个函数时,传入的原数组会被意外改变。使用扩展运算符[...arry]可以快速创建一个浅拷贝,保证原数组不受影响。如果你的场景允许修改原数组,也可以直接操作原数组后返回,但推荐保持函数的纯性。
  • 中间索引的计算:对于奇数长度的数组,比如长度为5,Math.floor(5/2)和Math.floor((5-1)/2)都会得到2,两种写法都能正确定位中间元素,选你觉得易读的即可。
  • 测试验证:输入[1, 2, 3, 4, 5],函数会返回[1, 2, 'Hi', 4, 5],完全符合你的需求;输入偶数长度数组比如[1,2,3,4],会原样返回该数组的副本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:05:40