2628. 完全相等的 JSON 字符串
2025年6月25日小于 1 分钟
2628. 完全相等的 JSON 字符串
type JSONValue =
| null
| boolean
| number
| string
| JSONValue[]
| { [key: string]: JSONValue }
function areDeeplyEqual(o1: JSONValue, o2: JSONValue): boolean {
if (o1 === o2) return true
if (o1 === null || o2 === null) return false
if (typeof o1 !== typeof o2) return false
if (Array.isArray(o1) !== Array.isArray(o2)) return false
if (Array.isArray(o1)) {
if (!Array.isArray(o2)) return false
if (o1.length !== o2.length) return false
for (let i = 0; i < o1.length; i++) {
if (!areDeeplyEqual(o1[i], o2[i])) return false
}
return true
}
if (typeof o1 === 'object' && typeof o2 === 'object') {
const keys1 = Object.keys(o1)
const keys2 = Object.keys(o2)
if (keys1.length !== keys2.length) return false
for (const key of keys1) {
if (!(key in o2)) return false
if (!areDeeplyEqual(o1[key], o2[key])) return false
}
return true
}
return false
}