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';