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

为何调用splice(0,1)未删索引0元素反而删除索引1元素?

问题原因及解决方法

你的代码如下:

selectedRoles= [1,230] 
if(this.selectedRoles.length > 1) 
{
  this.selectedRoles= this.selectedRoles.splice(0,1);
}

问题出在对Array.splice()方法的理解偏差上:

  • splice()有两个关键特性:它会直接修改原数组,同时返回被删除元素组成的新数组。
  • 执行this.selectedRoles.splice(0,1)时,原数组已经被修改为[230](确实删掉了索引0的元素1),但这个方法返回的是被删掉的元素组成的数组[1]。
  • 你把这个返回值重新赋值给了selectedRoles,导致最终selectedRoles变成了[1],看起来像是“删掉了230”,但实际是你覆盖了原本已经正确修改的数组。

要实现你的需求,不需要给selectedRoles重新赋值,直接调用splice()修改原数组即可:

selectedRoles= [1,230] 
if(this.selectedRoles.length > 1) 
{
  this.selectedRoles.splice(0,1);
}

执行后selectedRoles就会变成[230],符合你删除索引0元素的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:55:27