substance
Version:
Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing systems.
25 lines (23 loc) • 663 B
JavaScript
import isPlainObject from './isPlainObject'
import isArray from './isArray'
export default function isEqual(a, b) {
if (a === b) return true
if (isArray(a) && isArray(b)) {
if (a.length !== b.length) return false
for (let i = 0; i < a.length; i++) {
if (!isEqual(a[i], b[i])) return false
}
return true
}
if (isPlainObject(a) && isPlainObject(b)) {
let akeys = Object.keys(a).sort()
let bkeys = Object.keys(b).sort()
if (!isEqual(akeys, bkeys)) return false
for (let i = 0; i < akeys.length; i++) {
let key = akeys[i]
if (!isEqual(a[key], b[key])) return false
}
return true
}
return false
}