d = {'hello':'abc'}
d.get('hello','default_val');
Выше - питон. Как это сделать в javascript? Я хочу иметь возможность установить значение по умолчанию, если ключ не найден.
d = {'hello':'abc'}
d.get('hello','default_val');
Выше - питон. Как это сделать в javascript? Я хочу иметь возможность установить значение по умолчанию, если ключ не найден.
У вас есть (по крайней мере) четыре варианта:
Во многих случаях вы можете использовать любопытно-могущественную ||
оператор:
x = obj.key || "default";
Это означает: установите x
в obj.key
если obj.key
является ложным, и в этом случае вместо этого используйте "default"
. В falsy значения не 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
.
Оператор логического ИЛИ Javascript является короткозамкнутым. Ты можешь сделать:
d["hello"] || "default_val";
Как насчет:
var d = {'hello':'abc'};
var helloVar = d.hello ? d.hello : 'default_val';