【问题标题】:Javascript: Deep comparison of object function syntax errorJavascript:对象函数语法错误的深度比较
【发布时间】:2019-08-26 17:45:32
【问题描述】:

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

这是函数:

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
    }
}

预期输出: 真假 实际输出:

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

SyntaxError: Unexpected identifier

【问题讨论】:

  • typeof 而不是 typeOf ;)

标签: javascript function object syntax


【解决方案1】:

你打错了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
    }
}

【讨论】:

  • 知道了,不敢相信我这么愚蠢 XD。另外我只是把反斜杠放进去,这样人们就不必在堆栈溢出帖子上滚动了。我的程序中实际上没有。
  • 很高兴为您提供帮助 :) 祝您有美好的一天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
相关资源
最近更新 更多