如何检测对象中多属性值是否为undefined?无需循环返回布尔值
检测对象中是否存在值为undefined的属性
需求说明
你需要检测一个包含多属性的对象中是否存在值为undefined的属性,示例对象如下:
let test = { helo: undefined, hey: "not undefined" }
你原本尝试使用for...of循环遍历对象,但希望不通过循环,直接得到布尔类型的检测结果。
解决方案
可以结合Object.values()和数组的some()方法实现,一行代码就能得到结果:
const hasUndefined = Object.values(test).some(val => val === undefined); console.log(hasUndefined); // 输出 true
原理说明
Object.values(test)会提取对象所有自身可枚举属性的值,返回一个数组,示例中对应的数组是[undefined, "not undefined"]some()方法会遍历数组,只要有任意一个元素满足val === undefined的条件,就立即返回true;如果所有元素都不满足,则返回false
如果需要区分对象自身存在但值为undefined的属性和不存在的属性,上述方法只会检测前者,符合常规需求。
内容的提问来源于stack exchange,提问作者Kevin ami
相关产品推荐
相关产品推荐

