Skip to content

Commit

Permalink
fix diffAndCloneA
Browse files Browse the repository at this point in the history
  • Loading branch information
hiyuki committed Oct 17, 2023
1 parent 7b95236 commit df49b89
Showing 1 changed file with 9 additions and 10 deletions.
19 changes: 9 additions & 10 deletions packages/utils/src/object.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ function diffAndCloneA (a, b) {

function deepDiffAndCloneA (a, b, currentDiff, bIsEmpty) {
const setDiff = (val) => {
if (val) {
if (val && !currentDiff) {
currentDiff = val
if (curPath) {
diffData = diffData || {}
Expand All @@ -44,10 +44,9 @@ function diffAndCloneA (a, b) {
}
}
let clone = a
if (bIsEmpty) {
if (!currentDiff) setDiff(true)
} else if (typeof a !== 'object' || a === null) {
if (!currentDiff) setDiff(a !== b)
setDiff(bIsEmpty)
if (typeof a !== 'object' || a === null) {
setDiff(a !== b)
} else {
const toString = Object.prototype.toString
const className = toString.call(a)
Expand All @@ -58,7 +57,7 @@ function diffAndCloneA (a, b) {
const keys = Object.keys(a)
length = keys.length
clone = {}
if (!currentDiff) setDiff(!sameClass || length < Object.keys(b).length || !Object.keys(b).every((key) => hasOwn(a, key)))
setDiff(!sameClass || length < Object.keys(b).length || !Object.keys(b).every((key) => hasOwn(a, key)))
lastPath = curPath
for (let i = 0; i < length; i++) {
const key = keys[i]
Expand All @@ -77,7 +76,7 @@ function diffAndCloneA (a, b) {
} else if (Array.isArray(a)) {
length = a.length
clone = []
if (!currentDiff) setDiff(!sameClass || length < b.length)
setDiff(!sameClass || length < b.length)
lastPath = curPath
for (let i = 0; i < length; i++) {
curPath += `[${i}]`
Expand All @@ -93,11 +92,11 @@ function diffAndCloneA (a, b) {
Object.preventExtensions(clone)
}
} else if (a instanceof RegExp) {
if (!currentDiff) setDiff(!sameClass || '' + a !== '' + b)
setDiff(!sameClass || '' + a !== '' + b)
} else if (a instanceof Date) {
if (!currentDiff) setDiff(!sameClass || +a !== +b)
setDiff(!sameClass || +a !== +b)
} else {
if (!currentDiff) setDiff(!sameClass || a !== b)
setDiff(!sameClass || a !== b)
}
}
if (currentDiff) {
Expand Down

0 comments on commit df49b89

Please sign in to comment.