如何高效检测JavaScript对象中是否恰好仅有一个值已定义?
实现方案
可以通过以下方式实现foo函数,简洁高效地检查对象中是否恰好仅有一个值不为undefined:
function foo(x) { return Object.values(x).filter(val => val !== undefined).length === 1; }
逻辑说明
Object.values(x):提取对象的所有值,组成一个数组。filter(val => val !== undefined):过滤掉数组中值为undefined的元素,只保留已定义的值。length === 1:判断过滤后的数组长度是否恰好为1,是则返回true,否则返回false。
验证示例
针对你给出的三个对象:
obj:过滤后数组长度为1,foo(obj)返回trueotherobj:过滤后数组长度为0,foo(otherobj)返回falseanotherobj:过滤后数组长度为3,foo(anotherobj)返回false
因此原代码中的if条件会触发alert("!!!"),符合预期。
内容的提问来源于stack exchange,提问作者Endunry
相关产品推荐
相关产品推荐

