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

如何在JavaScript中移除JSON内所有id为1234的对象?delete["1234"]是否可行?

如何在JavaScript中移除数组里所有id为"1234"的对象?

嘿,我来帮你理清这个问题!首先直接给你结论:delete["1234"]完全不可行,我后面会解释原因,先给你正确的解决方法。

为什么delete["1234"]不行?

delete是JavaScript的操作符,专门用来删除对象的属性——比如你有个对象const user = { id: "1234", name: "Alice" },执行delete user.id可以删掉这个属性,但它根本不是用来处理数组元素的。你现在的目标是过滤数组里的元素,所以这个方法完全不对路。

正确的解决方法

方法1:创建新数组(推荐,不修改原数组)

用Array.filter()方法,这是最简洁且符合函数式编程风格的方式,它会生成一个新数组,包含所有符合条件的元素,原数组保持不变:

// 你的原始数组
const courses = [
  { "id": "1234", "day": "Monday", "course": "Math110" },
  { "id": "1234", "day": "Wednesday", "title": "Math110" },
  { "id": "1345", "day": "Tuesday", "title": "Economics210" }
];

// 过滤掉所有id为"1234"的对象
const filteredCourses = courses.filter(item => item.id !== "1234");

console.log(filteredCourses);
// 输出: [{ "id": "1345", "day": "Tuesday", "title": "Economics210" }]

解释:filter()会遍历数组中的每个元素,只保留那些item.id !== "1234"的元素,最终返回新数组。这种方法不会修改原数组,避免了意外的副作用,非常推荐使用。

方法2:修改原数组(如果必须的话)

如果你确实需要直接修改原数组,可以用Array.splice()方法,但要注意从后往前遍历数组,否则会出现索引错乱的问题:

const courses = [
  { "id": "1234", "day": "Monday", "course": "Math110" },
  { "id": "1234", "day": "Wednesday", "title": "Math110" },
  { "id": "1345", "day": "Tuesday", "title": "Economics210" }
];

// 从数组末尾开始遍历
for (let i = courses.length - 1; i >= 0; i--) {
  if (courses[i].id === "1234") {
    // 删除当前索引的元素,第二个参数1表示只删一个
    courses.splice(i, 1);
  }
}

console.log(courses);
// 输出: [{ "id": "1345", "day": "Tuesday", "title": "Economics210" }]

解释:如果从前往后遍历,当你删除一个元素后,数组后面的元素会往前移动一位,导致下一个符合条件的元素被跳过(因为索引已经变了)。从后往前遍历就不会有这个问题,每个元素都会被正确检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:56:01