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

如何在数组中间插入新值?splice方法使用问题排查

问题分析与解决

初始代码问题

  1. splice参数错误:你把数组元素a[mid]作为splice的第一个参数(索引位置),但splice要求第一个参数是数组索引而非元素值,这会导致插入位置完全错误。
  2. 返回值错误:splice在执行插入操作时(第二个参数为0),返回的是被删除元素组成的数组(这里没有删除元素,所以返回空数组),你把这个空数组赋值给final并返回,自然得不到修改后的原数组。

修改后代码问题

当原数组长度为偶数时,count = a.length + 1是奇数,mid = count / 2会得到小数(比如数组长度6时,mid=3.5)。此时mid % 2既不等于0也不等于1,两个条件分支都不会进入,splice根本没执行,数组保持原样,这就是第二个测试用例失败的原因。

正确解决方案

不需要复杂的奇偶判断,直接基于原数组长度计算插入索引即可。从你的期望输出来看,插入位置就是原数组的中间位置:

  • 原数组长度为偶数时,插入到中间两个元素的右侧(如长度4时,插入索引为2)
  • 原数组长度为奇数时,插入到中间元素的左侧(如长度5时,插入索引为2)

用Math.floor(a.length / 2)可以统一处理这两种情况,代码如下:

function solution(a, x) {
  const insertIndex = Math.floor(a.length / 2);
  a.splice(insertIndex, 0, x);
  return a;
}

测试验证

  • 输入a = [7, 10, 15, 54], x = 99:
    原数组长度4,insertIndex = 2,执行splice后得到[7, 10, 99, 15, 54],符合期望。
  • 输入a = [64, 38, 22, 27, 62, 41], x = 90:
    原数组长度6,insertIndex = 3,执行splice后得到[64, 38, 22, 90, 27, 62, 41],符合期望。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:30:58