我如何确定一个对象x是否具有定义的属性y,而不管x.y的值是多少?
我正在使用
if (typeof(x.y) !== 'undefined')
但这似乎有点笨拙。有没有更好的办法?
我如何确定一个对象x是否具有定义的属性y,而不管x.y的值是多少?
我正在使用
if (typeof(x.y) !== 'undefined')
但这似乎有点笨拙。有没有更好的办法?
当前回答
包括
Object.keys(x).includes('y');
array .prototype.includes()方法确定数组在其条目中是否包含某个值,并根据需要返回true或false。
and
object. keys()返回一个字符串数组,表示给定对象的所有可枚举属性。
. hasownproperty()和ES6+ ?-option -chaining如:if (x?.y)是非常好的2020+选项。
其他回答
你可以像这样修剪一下:
if ( x.y !== undefined ) ...
我的原始代码的一个特性
if ( typeof(x.y) != 'undefined' ) ...
这在某些情况下是有用的不管x是否存在它都是安全的。对于gnarf回答中的任何一种方法,如果对x是否存在有任何怀疑,都应该首先测试x。
因此,也许这三种方法在一个人的魔术包中都有一席之地。
下划线。js或Lodash
if (_.has(x, "y")) ...
:)
ES6 +:
ES6+有一个新功能,你可以像下面这样检查:
if (x?.y)
实际上,解释器检查x的存在,然后调用y,因为在if括号内,强制发生,x?Y转换为布尔值。
包括
Object.keys(x).includes('y');
array .prototype.includes()方法确定数组在其条目中是否包含某个值,并根据需要返回true或false。
and
object. keys()返回一个字符串数组,表示给定对象的所有可枚举属性。
. hasownproperty()和ES6+ ?-option -chaining如:if (x?.y)是非常好的2020+选项。