Skip to content

Instantly share code, notes, and snippets.

@unti1x
Last active May 11, 2016 08:10
Show Gist options
  • Save unti1x/493ca09e60009abe5c540e4252d3e22e to your computer and use it in GitHub Desktop.
Save unti1x/493ca09e60009abe5c540e4252d3e22e to your computer and use it in GitHub Desktop.
Set default values recoursive
_mergeDefaults = (item, defaultValues...)->
for defaultValue in defaultValues
for key, value of defaultValue
if not item[key]
item[key] = value
else if typeof value is 'object' and typeof value.length is 'undefined'
item[key] = _mergeDefaults(item[key], value)
return item
# call
_mergeDefaults {a: 1, b: {c: 2, d:3}}, {a: 5, b: {t: 8}}, {d: 1} # => a: 1, b: {c: 2, d: 3, t: 8}, d: 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment