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

