Что эквивалентно.get в javascript?

d = {'hello':'abc'}
d.get('hello','default_val');

Выше - питон. Как это сделать в javascript? Я хочу иметь возможность установить значение по умолчанию, если ключ не найден.

Ответ 1

У вас есть (по крайней мере) четыре варианта:

  1. Во многих случаях вы можете использовать любопытно-могущественную || оператор:

    x = obj.key || "default";
    

    Это означает: установите x в obj.key если obj.key является ложным, и в этом случае вместо этого используйте "default". В falsy значения не undefined, null, 0, NaN, "", и, конечно, false. Поэтому вы не захотите использовать его, если obj.key может быть 0 или любым другим из этих значений.

  2. Для ситуаций, когда || не применяется, там in операторе:

    x = "key" in obj ? obj.key : "default";
    

    in указывает, имеет ли объект свойство с данным ключом. Обратите внимание, что ключ является строкой (имена свойств - это строки или символы, если вы использовали символ, вы бы знали). Поэтому, если obj.key может быть действительным 0, вы должны использовать это, а не # 1 выше.

  3. in найдет ключ, если он находится в объекте или цепочке прототипов объекта (например, все места, откуда вы его получите, если вы получите свойство). Если вы просто хотите проверить сам объект, а не цепочку прототипов, вы можете использовать hasOwnProperty:

    x = obj.hasOwnProperty("key") ? obj.key : "default";
    
  4. В частности, проверьте, undefined:

    x = typeof obj.key !== "undefined" ? obj.key : "default";
    

    Это будет использовать значение по умолчанию, если obj не имеет этого свойства или имеет свойство, но значение свойства не undefined.

Ответ 3

Как насчет:

var d = {'hello':'abc'};
var helloVar = d.hello ? d.hello : 'default_val';