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

ES6中使用forEach删除JSON数组对象指定键返回undefined,是什么原因?

问题分析与解决

错误点说明

  • forEach 方法设计上就没有返回值,执行后默认返回 undefined,你将 forEach 的执行结果赋值给原数组变量 obj,直接把原有数组覆盖成了 undefined,这是返回结果为undefined的核心原因。
  • 注释中的代码目标删除键名写错了,原对象中存储的键是YYY,你写的是YYYY多了一个Y,就算去掉赋值逻辑,也删除不了目标键。

正确实现方式

直接修改原数组的forEach写法

不需要对obj重新赋值,数组中存储的对象是引用类型,遍历过程中直接修改对象属性即可生效:

obj.forEach(item => { 
  delete item.YYY
})
console.log(obj) // 输出结果和你原来的for循环效果完全一致

不污染原数组的写法

如果需要保留原始数组的数据,推荐用map方法生成新数组:

const processedArr = obj.map(item => {
  // 解构剔除不需要的YYY属性,返回剩余属性组成的新对象
  const { YYY, ...rest } = item
  return rest
})

这个写法不会修改原数组的内容,更适合需要保留原始数据的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:36:03