如何判断对象的所有属性是否均为null?含空对象场景适配
解决对象全为空属性或空对象的判断问题
嘿,我来帮你完善这个判断逻辑!你现在已经用isEmpty处理了空对象的情况,接下来只需要加上对“所有属性都是null”的检查就行,结合lodash的方法可以很优雅地实现:
import { isEmpty, every } from 'lodash'; // 整合后的判断逻辑 return !isEmpty(this.report.device) && every(this.report.device, value => value !== null);
拆解一下这个逻辑:
!isEmpty(this.report.device):先把空对象的情况排除掉——如果是空对象,这部分直接是false,整个表达式结果就是false,符合你返回false的需求。every(this.report.device, val => val !== null):用every遍历对象的所有属性值,只要有任何一个属性值不是null,这部分就返回true;如果所有属性全是null,这部分返回false。- 两者用
&&连接,只有当对象不是空的,同时不是所有属性都是null的时候,才返回true,完全覆盖了你要的两种场景。
如果你想用原生JS实现(不用额外的lodash方法):
也可以用Object.values配合原生的every来写,逻辑是一样的:
const device = this.report.device; // 如果是空对象 或者 所有属性都是null,就返回false,否则返回true return !(isEmpty(device) || Object.values(device).every(val => val === null));
这样不管是{}还是{ property1: null, property2: null },都会返回false,其他情况返回true,完美满足你的需求~
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

