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

如何删除对象中数组的指定元素?delete与splice尝试失败

解决对象数组元素删除的问题

先分析你之前的错误

  • delete操作符的问题:delete确实只能移除数组索引对应的元素值,不会改变数组长度,会留下空位(表现为null/undefined),不是真正意义上的删除元素。
  • splice调用错误:你写的my_object[contacts_id][1].splice(0,1)有两个问题:
    1. 属性名contacts_id没有加引号,会被当作变量处理,如果没定义这个变量会直接报错;正确的访问方式是my_object["contacts_id"]或者my_object.contacts_id。
    2. 你调用的是数组元素(值为2的数字)的splice方法,但数字类型没有splice方法,splice是数组对象的方法,必须调用在数组本身。

两种可行的解决方法

方法1:用splice直接修改原数组

splice是数组的内置方法,能直接修改原数组,语法是array.splice(起始索引, 删除数量)。你要删除的元素在contacts_id数组的索引1位置,所以代码如下:

// 直接修改原对象的数组
my_object.contacts_id.splice(1, 1);

执行后原对象的contacts_id就会变成[1, 3]。如果不想修改原对象,可以先浅拷贝对象再操作:

// 浅拷贝原对象
let my_object_modified = {...my_object};
// 对拷贝后的数组执行删除
my_object_modified.contacts_id.splice(1, 1);

方法2:用filter创建新数组(不修改原对象)

如果希望保留原对象不变,用filter方法生成新数组更合适,它会返回所有符合条件的元素:

let my_object_modified = {
  ...my_object,
  contacts_id: my_object.contacts_id.filter(item => item !== 2)
};

这段代码会创建一个新对象,其中contacts_id是过滤掉值为2的元素后的新数组,原对象不受影响。

内容的提问来源于stack exchange,提问作者Jörg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:45:12