d = {'hello':'abc'}
d.get('hello','default_val');
上面是python。如何在javascript中执行此操作?如果找不到密钥,我希望能够设置默认值。
答案 0 :(得分:20)
你有(至少)四种选择:
在许多情况下,您可以使用the curiously-powerful ||
operator:
x = obj.key || "default";
这意味着:将x
设置为obj.key
,除非obj.key
falsy ,在这种情况下请改用"default"
。虚假值为undefined
,null
,0
,NaN
,""
,当然还有false
。因此,如果obj.key
可能有效0
或其他任何值,您就不会想要使用它。
对于||
不适用的情况,有in
运算符:
x = "key" in obj ? obj.key : "default";
in
告诉我们一个对象是否具有给定键的属性。注意,键是一个字符串(属性名称是字符串或符号;如果您使用的是符号,您就知道了)。因此,如果obj.key
可能有效0
,则您需要使用此而非上述#1。
in
会找到一个密钥,如果它位于对象或对象的原型链中(例如,如果你检索属性,你会得到它的所有地方) )。如果您只想检查对象本身而不是其原型链,可以使用hasOwnProperty
:
x = obj.hasOwnProperty("key") ? obj.key : "default";
专门检查undefined
:
x = typeof obj.key !== "undefined" ? obj.key : "default";
如果obj
没有该属性或,如果它具有该属性,但该属性的值为undefined
,那么将使用默认值。
答案 1 :(得分:4)
Javascript的logical OR operator是short-circuiting。你可以这样做:
d["hello"] || "default_val";
答案 2 :(得分:0)
怎么样:
var d = {'hello':'abc'};
var helloVar = d.hello ? d.hello : 'default_val';
答案 3 :(得分:0)
const { hello = 'default_val' } = d