首页 > 解决方案 > Javascript:对象函数语法错误的深度比较

问题描述

我正在编写一个递归函数来对两个对象进行深度比较。但是,我收到语法错误。

这是功能:

function deepEqual(obj1, obj2) {
    if (compareArrays(Object.keys(obj1), Object.keys(obj2))){
        for (let x of Object.keys(obj1)){
            if (typeOf obj1.x == 'object' && typeOf obj2.x == 'object')\
                        return deepEqual(obj1.x, obj2.x)
            else{
                if (obj1.x !== obj2.x) return false
            }
        }
            return true
    }
    else{
        return false
    }

}

这是函数 compareArrays(没有错误):

function compareArrays(array1, array2) {
    if (array2.length === array1.length) {
        for (var i = array2.length - 1; i >= 0; i--) {
            if (array2[i] !== array1[i]){
                return false
            }
        }
        return true
}
    else{
        return false
    }
}

预期输出:true/false 实际输出:

if (typeOf obj1.x == 'object' && typeOf obj2.x == 'object') return deepEqual(obj1.x, obj2.x)
                       ^^^^

SyntaxError: Unexpected identifier

标签: javascriptfunctionobjectsyntax

解决方案


你打错了typeof\没用

试试这个

function deepEqual(obj1, obj2) {
    if (compareArrays(Object.keys(obj1), Object.keys(obj2))){
        for (let x of Object.keys(obj1)){
            if (typeof obj1.x == 'object' && typeof obj2.x == 'object')
                return deepEqual(obj1.x, obj2.x)
            else{
                if (obj1.x !== obj2.x) return false
            }
        }
        return true
    }
    else{
        return false
    }
}

推荐阅读