如何从JavaScript对象数组中过滤存在空值属性的对象?
过滤数组中含空值或null属性的对象
要过滤掉数组中任意属性值为null或空字符串("")的对象,你可以用数组的filter方法搭配Object.values和every方法来实现:
实现代码
const originalArray = [{ "ServiceArea": "NON-CIO", "ManagingDirector": "qwe", "Lead": "abc", "Manager": "xyz", "id":"1", "Designation":"COO" }, { "ServiceArea": "NON-CIO", "ManagingDirector": "dfg", "Lead": "", "Manager": "lkj", "id":"2", "Designation":"CTO" }, { "ServiceArea": "NON-CIO", "ManagingDirector": "out", "Lead": "poi", "Manager": "", "id":"43", "Designation":"COO" }, { "ServiceArea": "4500-CIO", "ManagingDirector": "yhh", "Lead": "trr", "Manager": "nbb", "id":"403", "Designation":"CTO" } ]; // 过滤逻辑:保留所有属性值都不为null或空字符串的对象 const filteredArray = originalArray.filter(obj => Object.values(obj).every(val => val !== null && val !== '') ); console.log(filteredArray);
输出结果
执行后会得到原数组中所有属性均有效值的对象,也就是第一条和第四条记录:
[ { "ServiceArea": "NON-CIO", "ManagingDirector": "qwe", "Lead": "abc", "Manager": "xyz", "id": "1", "Designation": "COO" }, { "ServiceArea": "4500-CIO", "ManagingDirector": "yhh", "Lead": "trr", "Manager": "nbb", "id": "403", "Designation": "CTO" } ]
逻辑说明
filter:遍历原数组,筛选出符合条件的元素Object.values(obj):提取当前对象的所有属性值,转为数组every:检查数组中每一个值,只有当所有值都不是null或空字符串时,才返回true,对应的对象会被保留
注:你提到的理想输出包含第二条记录,但该记录的Lead属性为空字符串,按照需求应该被过滤掉,推测是描述失误,实际符合要求的是第一条和第四条记录。
内容的提问来源于stack exchange,提问作者Rahul Jain
相关产品推荐
相关产品推荐

