My First Playground

node v14.20.1
version: 1.0.0
endpointsharetweet
This is a playground to test JavaScript. It runs a completely standard copy of Node.js on a virtual server created just for you. Every one of npm’s 300,000+ packages are pre-installed, so try it out:
const deepmerge = require("deepmerge"); const base = { 'secret-managers': [{ email: 'a' }, { email: 'b' }], 'tech-leads': [{ email: 'bob@foo.bar' }, { email: 'joe@foo.bar' }], 'approvers': [{ email: 'jill@foo.bar'}, { serviceAccount: 'svc.halo' }], }; const toMerge = { 'secret-managers': [{ serviceAccount: 'svc.halo' }], 'approvers': [{ serviceAccount: 'svc.halo' }] }; function areObjectsEqual(first, second) { if (typeof first !== typeof second) { return false; } if (first === null && second === null) { return true; } if (first === null ^ second === null) { return false; } if (Array.isArray(first) && Array.isArray(second)) { return first.length === second.length && first.every((item, i) => areObjectsEqual(item, second[i])); } if (typeof first === 'object' && typeof second === 'object') { const firstEntries = Object.entries(first); const secondEntries = Object.entries(second); return firstEntries.length === secondEntries.length && firstEntries.every(([key, value]) => areObjectsEqual(value, second[key])); } return first === second; } function arrayMerge(target, source) { return [...target, ...source.filter(item => !target.some(t => areObjectsEqual(item, t)))]; } console.log(deepmerge(base, toMerge, { arrayMerge }));
Loading…

no comments

    sign in to comment