判断JS对象属性全非空或全为空,现有代码有误求更优实现
问题原因
你现有代码的逻辑和需求完全相反:当前判断条件命中的是「部分属性为空、部分属性不为空」的场景,你反而将allow赋值为true,自然不符合预期。
正确实现
按需求拆解为两个并行判断条件,满足任意一个时allow为true即可:
// 抽取公用判空逻辑,提升可读性 const isNil = (val) => val === null || val === undefined const objValues = Object.values(myobject) // 条件1:所有属性都是空值 const allNil = objValues.every(isNil) // 条件2:所有属性都不是空值 const allNotNil = objValues.every(val => !isNil(val)) const allow = allNil || allNotNil
如果要写得更精简,也可以直接合并判断:
const allow = Object.values(myobject).every(v => v == null) || Object.values(myobject).every(v => v != null)
注:
== null是JS里的简写,会同时匹配null和undefined两种情况,和你原来的判断逻辑等价。
内容的提问来源于stack exchange,提问作者Qiimiia
相关产品推荐
相关产品推荐

