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
相关产品推荐
相关产品推荐

