{"ScriptPreparationCode":"var l = _.range(1000).reduce( (acc, i) =\u003E ({...acc, i: { id: i, name: \u0027test\u0027 }}), {} )\r\nvar r = _.range(40).reduce((acc, i) =\u003E ({...acc, i: { id: i, name: \u0022test\u0022 \u002B i }}), {} )\r\n\r\nvar mergeMapsOfRecords = (\r\n obj1,\r\n obj2,\r\n equalityChecker = apiRecordEqualityCheck\r\n) =\u003E {\r\n const l = obj1 || {}\r\n const r = obj2 || {}\r\n const keys = Object.keys(r)\r\n const newMap = { ...l }\r\n\r\n for (const key of keys) {\r\n if (l.hasOwnProperty(key) \u0026\u0026 r.hasOwnProperty(key)) {\r\n if (equalityChecker(l[key], r[key])) {\r\n newMap[key] = l[key]\r\n }\r\n newMap[key] = { ...l[key], ...r[key] }\r\n } else {\r\n newMap[key] = r[key]\r\n }\r\n }\r\n\r\n return newMap\r\n}\r\n\r\nvar apiRecordEqualityCheck = (record1, record2) =\u003E {\r\n if (\r\n record1.updatedAt \u0026\u0026\r\n record2.updatedAt \u0026\u0026\r\n record1.updatedAt === record2.updatedAt \u0026\u0026\r\n (Object.keys(record1).length \u0026\u0026 Object.keys(record2))\r\n ) {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\n","TestCases":[{"Name":"Ramda","Code":"const a = R.mergeDeepRight(l, r)","IsDeferred":false},{"Name":"naive","Code":"const b = mergeMapsOfRecords(l, r)","IsDeferred":false}]}