Skip to content

Commit 7caf8a1

Browse files
author
Steven Chester
committed
reduce usage of reduce spread pattern
1 parent 6296889 commit 7caf8a1

File tree

3 files changed

+53
-16
lines changed

3 files changed

+53
-16
lines changed

src/arrayDiff/index.js

+26-8
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,18 @@ const diff = (lhs, rhs) => {
88
const l = properObject(lhs);
99
const r = properObject(rhs);
1010

11-
const deletedValues = Object.keys(l).reduce((acc, key) => {
12-
return r.hasOwnProperty(key) ? acc : { ...acc, [key]: undefined };
13-
}, {});
11+
let changes = {}
12+
13+
const lKeys = Object.keys(l)
14+
15+
for (let i = 0; i < lKeys.length; i++) {
16+
const key = lKeys[i]
17+
18+
if (!r.hasOwnProperty(key)) {
19+
changes[key] = undefined
20+
}
21+
}
22+
1423

1524
if (isDate(l) || isDate(r)) {
1625
if (l.valueOf() == r.valueOf()) return {};
@@ -39,15 +48,24 @@ const diff = (lhs, rhs) => {
3948
}, deletedValues);
4049
}
4150

42-
return Object.keys(r).reduce((acc, key) => {
43-
if (!l.hasOwnProperty(key)) return { ...acc, [key]: r[key] }; // return added r key
51+
const rKeys = Object.keys(r)
52+
53+
for (let i = 0; i < rKeys.length; i++) {
54+
const key = rKeys[i]
55+
56+
if (!l.hasOwnProperty(key)) {
57+
changes[key] = r[key]
58+
continue;
59+
}
4460

4561
const difference = diff(l[key], r[key]);
4662

47-
if (isObject(difference) && isEmpty(difference) && !isDate(difference)) return acc; // return no diff
63+
if (isObject(difference) && isEmpty(difference) && !isDate(difference)) continue; // return no diff
64+
65+
changes[key] = difference
66+
}
4867

49-
return { ...acc, [key]: difference }; // return updated key
50-
}, deletedValues);
68+
return changes
5169
};
5270

5371
export default diff;

src/diff/index.js

+25-8
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,41 @@ const diff = (lhs, rhs) => {
88
const l = properObject(lhs);
99
const r = properObject(rhs);
1010

11-
const deletedValues = Object.keys(l).reduce((acc, key) => {
12-
return r.hasOwnProperty(key) ? acc : { ...acc, [key]: undefined };
13-
}, {});
11+
let changes = {}
12+
13+
const lKeys = Object.keys(l)
14+
15+
for (let i = 0; i < lKeys.length; i++) {
16+
const key = lKeys[i]
17+
18+
if (!r.hasOwnProperty(key)) {
19+
changes[key] = undefined
20+
}
21+
}
1422

1523
if (isDate(l) || isDate(r)) {
1624
if (l.valueOf() == r.valueOf()) return {};
1725
return r;
1826
}
1927

20-
return Object.keys(r).reduce((acc, key) => {
21-
if (!l.hasOwnProperty(key)) return { ...acc, [key]: r[key] }; // return added r key
28+
const rKeys = Object.keys(r)
29+
30+
for (let i = 0; i < rKeys.length; i++) {
31+
const key = rKeys[i]
32+
33+
if (!l.hasOwnProperty(key)) {
34+
changes[key] = r[key]
35+
continue;
36+
}
2237

2338
const difference = diff(l[key], r[key]);
2439

25-
if (isObject(difference) && isEmpty(difference) && !isDate(difference)) return acc; // return no diff
40+
if (isObject(difference) && isEmpty(difference) && !isDate(difference)) continue; // return no diff
41+
42+
changes[key] = difference
43+
}
2644

27-
return { ...acc, [key]: difference }; // return updated key
28-
}, deletedValues);
45+
return changes
2946
};
3047

3148
export default diff;

src/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import addedDiff from './added';
33
import deletedDiff from './deleted';
44
import updatedDiff from './updated';
55
import detailedDiff from './detailed';
6+
import arrayDiff from "./arrayDiff"
67

78
export {
89
addedDiff,
10+
arrayDiff,
911
diff,
1012
deletedDiff,
1113
updatedDiff,

0 commit comments

Comments
 (0)