From 1d430f496453281f0cfce665069dea5ed023bab9 Mon Sep 17 00:00:00 2001 From: SheneekaW Date: Wed, 2 Jun 2021 16:46:20 -0400 Subject: [PATCH] remove spread operator in object diffs to increase performance --- src/added.js | 6 ++++-- src/deleted.js | 6 ++++-- src/diff.js | 15 ++++++++++++--- src/updated.js | 3 ++- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/added.js b/src/added.js index 168fe7f..0dd7d22 100644 --- a/src/added.js +++ b/src/added.js @@ -13,10 +13,12 @@ const addedDiff = (lhs, rhs) => { if (isObject(difference) && isEmpty(difference)) return acc; - return { ...acc, [key]: difference }; + acc[key] = difference; + return acc; } - return { ...acc, [key]: r[key] }; + acc[key] = r[key]; + return acc; }, {}); }; diff --git a/src/deleted.js b/src/deleted.js index 9f8990e..50feb17 100644 --- a/src/deleted.js +++ b/src/deleted.js @@ -12,10 +12,12 @@ const deletedDiff = (lhs, rhs) => { if (isObject(difference) && isEmpty(difference)) return acc; - return { ...acc, [key]: difference }; + acc[key] = difference; + return acc; } - return { ...acc, [key]: undefined }; + acc[key] = undefined; + return acc; }, {}); }; diff --git a/src/diff.js b/src/diff.js index 9f33af4..b433b14 100644 --- a/src/diff.js +++ b/src/diff.js @@ -9,7 +9,12 @@ const diff = (lhs, rhs) => { const r = rhs; const deletedValues = Object.keys(l).reduce((acc, key) => { - return hasOwnProperty(r, key) ? acc : { ...acc, [key]: undefined }; + if (!hasOwnProperty(r, key)) { + acc[key] = undefined; + + } + + return acc; }, {}); if (isDate(l) || isDate(r)) { @@ -18,7 +23,10 @@ const diff = (lhs, rhs) => { } return Object.keys(r).reduce((acc, key) => { - if (!hasOwnProperty(l, key)) return { ...acc, [key]: r[key] }; // return added r key + if (!hasOwnProperty(l, key)){ + acc[key] = r[key]; // return added r key + return acc; + } const difference = diff(l[key], r[key]); @@ -26,7 +34,8 @@ const diff = (lhs, rhs) => { if (isEmptyObject(difference) && !isDate(difference) && (isEmptyObject(l[key]) || !isEmptyObject(r[key]))) return acc; // return no diff - return { ...acc, [key]: difference }; // return updated key + acc[key] = difference // return updated key + return acc; // return updated key }, deletedValues); }; diff --git a/src/updated.js b/src/updated.js index 749d1b3..8ab87ab 100644 --- a/src/updated.js +++ b/src/updated.js @@ -21,7 +21,8 @@ const updatedDiff = (lhs, rhs) => { if (isEmptyObject(difference) && !isDate(difference) && (isEmptyObject(l[key]) || !isEmptyObject(r[key]))) return acc; // return no diff - return { ...acc, [key]: difference }; + acc[key] = difference; + return acc; } return acc;