(object1: unknown, object2: unknown)
| 3 | } |
| 4 | |
| 5 | const deepEqual = (object1: unknown, object2: unknown): boolean => { |
| 6 | if (object1 === object2) { |
| 7 | return true |
| 8 | } |
| 9 | |
| 10 | if (Array.isArray(object1) && Array.isArray(object2)) { |
| 11 | if (object1.length !== object2.length) { |
| 12 | return false |
| 13 | } |
| 14 | return object1.every((val, index) => deepEqual(val, object2[index])) |
| 15 | } |
| 16 | |
| 17 | if (Array.isArray(object1) !== Array.isArray(object2)) { |
| 18 | return false |
| 19 | } |
| 20 | |
| 21 | if (!isObject(object1) || !isObject(object2)) { |
| 22 | return object1 === object2 |
| 23 | } |
| 24 | |
| 25 | const keys1 = Object.keys(object1) |
| 26 | const keys2 = Object.keys(object2) |
| 27 | if (keys1.length !== keys2.length) { |
| 28 | return false |
| 29 | } |
| 30 | |
| 31 | return keys1.every((key) => deepEqual(object1[key], object2[key])) |
| 32 | } |
| 33 | |
| 34 | export default deepEqual |
no test coverage detected
searching dependent graphs…