Skip to content

Instantly share code, notes, and snippets.

@skelet00r
Last active March 7, 2018 16:47
Show Gist options
  • Save skelet00r/65ba0b0910e88bf1bbed1a88e74e09d8 to your computer and use it in GitHub Desktop.
Save skelet00r/65ba0b0910e88bf1bbed1a88e74e09d8 to your computer and use it in GitHub Desktop.

Revisions

  1. James Delibas revised this gist Mar 7, 2018. No changes.
  2. James Delibas revised this gist Mar 7, 2018. No changes.
  3. James Delibas created this gist Mar 7, 2018.
    21 changes: 21 additions & 0 deletions merge.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    function merge(dest, src, discriminator) {
    if (!discriminator) {
    return [...dest, ...src];
    }
    const result = [...dest];
    src.forEach((s) => {
    const match = dest.find(d => d[discriminator] === s[discriminator]);
    if (match) {
    const oldVal = JSON.stringify(match);
    const newVal = JSON.stringify(s);
    if (oldVal !== newVal) {
    const index = result.indexOf(match);
    result[index] = s;
    return;
    }
    return;
    }
    result.push(s);
    });
    return result;
    }