如何在JavaScript中移除对象里值为空数组的属性?
解决对象中空数组属性的移除问题
原代码里判断空数组的逻辑obj[propName] == []完全不生效,原因很简单:JavaScript里数组是引用类型,用==或者===比较的时候,比的是两个值的内存引用地址,而不是内容。你写的[]每次都是一个新的空数组引用,永远不可能和对象里的Actor数组引用相等,所以这个判断条件永远为false,自然删不掉空数组属性。
要正确判断空数组,需要两步:
- 先确认当前属性值是数组:用
Array.isArray(obj[propName]) - 再确认数组长度为0:
obj[propName].length === 0
修改后的clean函数如下:
function clean(obj) { for (var propName in obj) { const value = obj[propName]; if (value === undefined || (Array.isArray(value) && value.length === 0)) { delete obj[propName]; } } return obj; }
测试调用clean(obj)后,原对象会变成{Rating:7.5},完全符合需求。
内容的提问来源于stack exchange,提问作者Muhammad suleman
相关产品推荐
相关产品推荐

