Skip to content

Instantly share code, notes, and snippets.

@JaysonHwang
Forked from ahtcx/deep-merge.js
Last active May 29, 2019 02:13
Show Gist options
  • Select an option

  • Save JaysonHwang/5dbc5d0ed946230cf52423c29f87f77d to your computer and use it in GitHub Desktop.

Select an option

Save JaysonHwang/5dbc5d0ed946230cf52423c29f87f77d to your computer and use it in GitHub Desktop.

Revisions

  1. JaysonHwang revised this gist May 29, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion deep-merge-pure.js
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    deepMergePure = (dst, src)=>{
    const deepMergePure = (dst, src)=>{
    const simpleClone = (jsonObj)=>{
    return JSON.parse(JSON.stringify(jsonObj));
    }
  2. JaysonHwang revised this gist May 29, 2019. 1 changed file with 18 additions and 0 deletions.
    18 changes: 18 additions & 0 deletions deep-merge-pure.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    deepMergePure = (dst, src)=>{
    const simpleClone = (jsonObj)=>{
    return JSON.parse(JSON.stringify(jsonObj));
    }
    //////deep-merge.js start
    const merge = (target, source) => {
    // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties
    for (let key of Object.keys(source)) {
    if (source[key] instanceof Object) Object.assign(source[key], merge(target[key], source[key]));
    }

    // Join `target` and modified `source`
    Object.assign(target || {}, source);
    return target;
    }
    //////deep-merge.js end
    return merge(simpleClone(dst),simpleClone(src));
    }
  3. @ahtcx ahtcx created this gist May 22, 2016.
    11 changes: 11 additions & 0 deletions deep-merge.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    // Merge a `source` object to a `target` recursively
    const merge = (target, source) => {
    // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties
    for (let key of Object.keys(source)) {
    if (source[key] instanceof Object) Object.assign(source[key], merge(target[key], source[key]))
    }

    // Join `target` and modified `source`
    Object.assign(target || {}, source)
    return target
    }
    1 change: 1 addition & 0 deletions deep-merge.min.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    const merge=(t,s)=>{let o=Object,a=o.assign;for(let k of o.keys(s))s[k]instanceof o&&a(s[k],merge(t[k],s[k]));return a(t||{},s),t}