{"ScriptPreparationCode":"function isObject(x) { return Object.prototype.toString.call(x) === \u0027[object Object]\u0027;}\r\n\r\nfunction deepMergeRightOnPlace(target, source) {\r\n for (const key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n const sourceVal = source[key];\r\n const targetVal = target[key];\r\n\r\n if (\r\n isObject(sourceVal) \u0026\u0026 isObject(targetVal)\r\n ) {\r\n // \u0420\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u043E\u0435 \u043E\u0431\u044A\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432\r\n deepMergeRightOnPlace(targetVal, sourceVal);\r\n } else {\r\n // \u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F\r\n target[key] = sourceVal;\r\n }\r\n }\r\n }\r\n\r\n return target;\r\n}\r\n\r\nfunction deepMergeRightOnPlace2(ref, source) {\r\n const keys = Object.keys(source);\r\n for (let i = 0; i \u003C keys.length; i \u002B= 1) {\r\n const key = keys[i];\r\n\r\n if (source.hasOwnProperty(key)) {\r\n const sourceVal = source[key];\r\n const targetVal = ref[key];\r\n\r\n if (isObject(sourceVal) \u0026\u0026 isObject(targetVal)) {\r\n deepMergeRightOnPlace2(targetVal, sourceVal);\r\n } else {\r\n ref[key] = sourceVal;\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction deepMergeRightOnPlace3(target, source) {\r\n for (const key in source) {\r\n if (!source.hasOwnProperty(key)) continue;\r\n\r\n const sourceValue = source[key];\r\n const targetValue = target[key];\r\n\r\n if (\r\n sourceValue != null \u0026\u0026\r\n typeof sourceValue === \u0027object\u0027 \u0026\u0026\r\n !Array.isArray(sourceValue) \u0026\u0026\r\n targetValue != null \u0026\u0026\r\n typeof targetValue === \u0027object\u0027 \u0026\u0026\r\n !Array.isArray(targetValue)\r\n ) {\r\n deepMergeRightOnPlace3(targetValue, sourceValue);\r\n } else {\r\n target[key] = sourceValue;\r\n }\r\n }\r\n}\r\n\r\nfunction deepMergeRightOnPlace4(target, source) {\r\n const keys = Object.keys(source);\r\n for (let i = 0; i \u003C keys.length; i\u002B\u002B) {\r\n const key = keys[i]\r\n if (!source.hasOwnProperty(key)) continue;\r\n\r\n const sourceValue = source[key];\r\n const targetValue = target[key];\r\n\r\n if (\r\n sourceValue != null \u0026\u0026\r\n typeof sourceValue === \u0027object\u0027 \u0026\u0026\r\n !Array.isArray(sourceValue) \u0026\u0026\r\n targetValue != null \u0026\u0026\r\n typeof targetValue === \u0027object\u0027 \u0026\u0026\r\n !Array.isArray(targetValue)\r\n ) {\r\n deepMergeRightOnPlace4(targetValue, sourceValue);\r\n } else {\r\n target[key] = sourceValue;\r\n }\r\n }\r\n}\r\n\r\nvar obj1 = {\r\n aa: [\u00221\u0022, \u00222\u0022, \u00223\u0022],\r\n a: \u0022l1\u0022,\r\n b: \u0022l2\u0022,\r\n c: \u0022l3\u0022,\r\n d: \u0022l4\u0022,\r\n e: {\r\n ea: [\r\n { eaa: \u0022l111\u0022, eab: \u0022l1111\u0022 },\r\n { eaa: \u0022l222\u0022, eab: \u0022l2222\u0022 },\r\n { eaa: \u0022l333\u0022, eab: \u0022l3333\u0022 },\r\n ],\r\n eb: \u0022leb\u0022,\r\n ec: {\r\n eca: \u0022leca\u0022,\r\n ecb: \u0022lecb\u0022,\r\n },\r\n },\r\n f: [\r\n { fa: \u0022l001\u0022, fb: \u0022l001\u0022 },\r\n { fa: \u0022l002\u0022, fb: \u0022l002\u0022 },\r\n { fa: \u0022l003\u0022, fb: \u0022l003\u0022 },\r\n ],\r\n};\r\n\r\nvar obj11 = {\r\n aa: [\u00221\u0022, \u00222\u0022, \u00223\u0022],\r\n a: \u0022l1\u0022,\r\n b: \u0022l2\u0022,\r\n c: \u0022l3\u0022,\r\n d: \u0022l4\u0022,\r\n e: {\r\n ea: [\r\n { eaa: \u0022l111\u0022, eab: \u0022l1111\u0022 },\r\n { eaa: \u0022l222\u0022, eab: \u0022l2222\u0022 },\r\n { eaa: \u0022l333\u0022, eab: \u0022l3333\u0022 },\r\n ],\r\n eb: \u0022leb\u0022,\r\n ec: {\r\n eca: \u0022leca\u0022,\r\n ecb: \u0022lecb\u0022,\r\n },\r\n },\r\n f: [\r\n { fa: \u0022l001\u0022, fb: \u0022l001\u0022 },\r\n { fa: \u0022l002\u0022, fb: \u0022l002\u0022 },\r\n { fa: \u0022l003\u0022, fb: \u0022l003\u0022 },\r\n ],\r\n};\r\n\r\nvar obj12 = {\r\n aa: [\u00221\u0022, \u00222\u0022, \u00223\u0022],\r\n a: \u0022l1\u0022,\r\n b: \u0022l2\u0022,\r\n c: \u0022l3\u0022,\r\n d: \u0022l4\u0022,\r\n e: {\r\n ea: [\r\n { eaa: \u0022l111\u0022, eab: \u0022l1111\u0022 },\r\n { eaa: \u0022l222\u0022, eab: \u0022l2222\u0022 },\r\n { eaa: \u0022l333\u0022, eab: \u0022l3333\u0022 },\r\n ],\r\n eb: \u0022leb\u0022,\r\n ec: {\r\n eca: \u0022leca\u0022,\r\n ecb: \u0022lecb\u0022,\r\n },\r\n },\r\n f: [\r\n { fa: \u0022l001\u0022, fb: \u0022l001\u0022 },\r\n { fa: \u0022l002\u0022, fb: \u0022l002\u0022 },\r\n { fa: \u0022l003\u0022, fb: \u0022l003\u0022 },\r\n ],\r\n};\r\n\r\nvar obj13 = {\r\n aa: [\u00221\u0022, \u00222\u0022, \u00223\u0022],\r\n a: \u0022l1\u0022,\r\n b: \u0022l2\u0022,\r\n c: \u0022l3\u0022,\r\n d: \u0022l4\u0022,\r\n e: {\r\n ea: [\r\n { eaa: \u0022l111\u0022, eab: \u0022l1111\u0022 },\r\n { eaa: \u0022l222\u0022, eab: \u0022l2222\u0022 },\r\n { eaa: \u0022l333\u0022, eab: \u0022l3333\u0022 },\r\n ],\r\n eb: \u0022leb\u0022,\r\n ec: {\r\n eca: \u0022leca\u0022,\r\n ecb: \u0022lecb\u0022,\r\n },\r\n },\r\n f: [\r\n { fa: \u0022l001\u0022, fb: \u0022l001\u0022 },\r\n { fa: \u0022l002\u0022, fb: \u0022l002\u0022 },\r\n { fa: \u0022l003\u0022, fb: \u0022l003\u0022 },\r\n ],\r\n};\r\n\r\nvar obj2 = {\r\n a: \u0022r1\u0022,\r\n c: \u0022r3\u0022,\r\n e: {\r\n ea: [\r\n { eaa: \u0022r111\u0022, eab: \u0022r1111\u0022 },\r\n { eaa: \u0022r222\u0022, eab: \u0022r2222\u0022 },\r\n ],\r\n ec: {\r\n eca: \u0022reca\u0022,\r\n ecc: \u0022recc\u0022,\r\n },\r\n },\r\n f: [{ fa: \u0022r001\u0022, fb: \u0022r001\u0022 }],\r\n g: {\r\n ga: \u0022ga\u0022,\r\n },\r\n};","TestCases":[{"Name":"Ramda.mergeDeepRight","Code":"R.mergeDeepRight(obj1, obj2)","IsDeferred":false},{"Name":"Lodash.merge","Code":"merge(obj1, obj2)","IsDeferred":false},{"Name":"deepmerge","Code":"deepmerge(obj1, obj2)","IsDeferred":false},{"Name":"es-toolkit merge","Code":"_.merge(obj1, obj2)","IsDeferred":false},{"Name":"deepmergeRightOnPlace","Code":"deepMergeRightOnPlace(obj1, obj2)","IsDeferred":false},{"Name":"deepMergeRightOnPlace2","Code":"deepMergeRightOnPlace2(obj11, obj2)","IsDeferred":false},{"Name":"deepMergeRightOnPlace3","Code":"deepMergeRightOnPlace3(obj12, obj2)","IsDeferred":false},{"Name":"deepMergeRightOnPlace4","Code":"deepMergeRightOnPlace4(obj13, obj2)","IsDeferred":false}]}