In Python, for a dictionary d,
d.setdefault('key', value)
sets d['key'] = value if 'key' was not in d, and otherwise leaves it as it is.
Is there a clean, idiomatic way to do this on a Javascript object, or does it require an if statement?
Advertisement
Answer
It’s basically like using an if statement, but shorter:
d.key || (d.key = value);
Or
d.key = d.key || value;
Update: as @bobtato noted, if the property is already set to the value false it would overwrite it, so a better way would be:
!d.key && d.key !== false && (d.key = value);
Or, to do it as he suggested (just the shorthanded version):
'key' in d || (d.key = value);
// including overwriting null values:
('key' in d && d.key !== null) || (d.key = value);