javascript - 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
解决方案
你打错了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
}
}
推荐阅读
- ramda.js - RamdaJS groupBy 和转换对象
- java - db2jcc.jar 中的 java.lang.NumberFormatException
- mysql - 远程连接服务器失败
- spring-boot - 从子项目中提取重复的插件到根 gradle 配置
- javascript - 当在 div 中定义路由时,反应路由器“未找到页面”页面未显示
- iis - Https 到另一个站点
- php - 如何使用 PHP 比较 XML 中的元素并添加具有 3 个或更多可能结果的新节点?
- android - 如何为水平recyclerview添加标题
- ios - 将 pod 文件升级到新的 swift 版本时出错
- bash - 这个if语句问题有更好的解决方案吗?