从数组中移除含指定属性对象时遗留空对象的原因与解决方案
为什么会产生空对象
map 方法会遍历数组的每一个元素,对每个元素执行转换逻辑后返回对应值,最终生成的新数组长度和原数组完全一致,不会主动丢弃任何元素。
你写的解构逻辑中,当遍历到带有fruits属性的对象时,提取fruits属性后剩余的rest就是没有任何属性的空对象,这一项会被保留在返回结果中,就出现了你看到的遗留空对象的情况。
正确的实现方式
如果你的核心需求是移除整个带有fruits属性的数组项,不需要拆分属性,直接使用filter方法过滤即可:
const result = items.filter(item => !item.hasOwnProperty('fruits'))
执行后得到的结果就是你需要的:[{"veggies": ["Potato","Carrot"]}]
如果你确实有先移除所有对象的fruits属性、再删除处理后为空的对象的特殊需求,可以组合map和filter实现:
const result = items .map(({ fruits, ...rest }) => rest) .filter(item => Object.keys(item).length > 0)
内容的提问来源于stack exchange,提问作者Lahari
相关产品推荐
相关产品推荐

