JavaScript数组使用splice方法移动元素后7、8号位内容异常问题
问题原因
你的代码核心错误出在 splice 方法的参数使用上:
Array.splice(startIndex, deleteCount, ...addItems)方法的第二个参数是要删除的元素数量,你当前仅需要移动索引7的1个元素,写了2会同时删除索引7和索引8的两个元素,后续你只把索引7的元素插回了索引2的位置,索引8的元素被直接丢弃,自然会出现后续位置元素不符合预期的问题。
修正后的实现代码
const data = response.data // 操作前打印确认初始数组,避免索引7越界 console.log('原始数组', data.groups_with_selected) let tmp = data.groups_with_selected.splice(7, 1)[0]; data.groups_with_selected.splice(2, 0, tmp); // 操作后打印确认结果 console.log('修改后数组', data.groups_with_selected)
通用排查思路
- 操作数组前先确认数组长度,确保要操作的索引真实存在,避免越界操作
- 每一步数组变更后打印对应的数组内容,确认删除、插入的结果符合预期
- 如果修改后还是有异常,排查上下文是否有其他逻辑同时修改了这个数组,排除冲突修改的影响
内容的提问来源于stack exchange,提问作者T dhanunjay
相关产品推荐
相关产品推荐

