From e0b83ff36d51e674c674e44a997f73710462b35f Mon Sep 17 00:00:00 2001 From: Marc Rivelles Date: Thu, 15 Sep 2016 11:16:57 +0100 Subject: [PATCH] Bugfix of missing keys in deep objects --- index.js | 12 ++++++++---- test/test.js | 8 ++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index ecdce2f..7106949 100644 --- a/index.js +++ b/index.js @@ -16,11 +16,15 @@ var diff = function(defaults,source){ } }else{ - var tmp = diff(defaults[key],value) - if(_.isEmpty(tmp)){ - delete result[key] + if(typeof defaults[ key ] === "undefined"){ + result[ key ] = value }else{ - result[key]=tmp + var tmp = diff(defaults[ key ], value) + if (_.isEmpty(tmp)) { + delete result[ key ] + } else { + result[ key ] = tmp + } } } diff --git a/test/test.js b/test/test.js index fb01fff..0ca417a 100644 --- a/test/test.js +++ b/test/test.js @@ -92,11 +92,15 @@ describe("object deep diff",function(){ var sourceObj = {a:{b:{c:"hello"}}} var sourceObj1 = {a:{b:{c:"hello world"}}} - + var sourceObj2 = {a:{d:{e:"hello world"}}} + var result = diff(defaultsObj,sourceObj) var result1 = diff(defaultsObj,sourceObj1) - + var result2 = diff(defaultsObj,sourceObj2) + expect(result).to.deep.equal({}) expect(result1).to.deep.equal(sourceObj1) + expect(result2).to.deep.equal(sourceObj2) + }) }) \ No newline at end of file