对“深度相等"进行功能检查.嵌套对象

编程入门 行业动态 更新时间:2024-10-28 15:32:34
本文介绍了对“深度相等"进行功能检查.嵌套对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试编写一个函数来检查两个对象是否具有相同的值.此功能要求我检查存储为原始对象内的值的所有对象是否相等.我开发的方法(请参见下面的代码)是首先检查非对象值的相等性.然后,如果所有这些都匹配,我将再次遍历这些对象并递归调用原始函数,这使我可以比较两个对象的每个嵌套级别.

I am trying to write a function that checks if two objects have the same values. This function requires that I check for the equality of any objects that are stored as values inside the original objects. The approach I have developed (see code below) is to first check the equality of non-object values. Then, if these all match, I iterate over the objects again and make a recursive call to the original function, which allows me to compare each nested level of the two objects.

但是,这种方法仅部分起作用.递归调用的性质意味着我只能检查对象中第一个键-值对上嵌套对象的相等性.一旦比较了第一套嵌套对象并且递归调用返回,我就无法弄清楚如何检查包含嵌套对象的任何其他键值对.这是函数:

However, this approach only partially works. The nature of the recursive call means I can only check the equality of nested objects at the first key - value pair in the object. I cannot figure out how to check any additional key-value pairs containing nested objects once the first set of nested objects have been compared and the recursive call returns. Here is the function:

var deepEqual = function(val1, val2) { if (typeof val1 === 'object' && typeof val2 === 'object') { for (i in val1) { for (i in val2){ if (typeof val1[i] !== 'object' && typeof val2[i] !== 'object') { if (val1[i] !== val2[i]) { return false } } } } for (i in val1) { for (i in val2){ if (typeof val1[i] === 'object' && typeof val2[i] === 'object') { return deepEqual(val1[i], val2[i]) } } } return true } else if (val1 === val2) { return true } else return false }

我的基本问题是,我认为我需要递归调用来检查嵌套对象的深度相等性,但是我只能成功执行一次此检查.有没有人试图解决这样的问题?如果需要更具体的对象,我将提供一些示例结果.谢谢!

My basic problem is that I believe I need a recursive call to check for the deep equality of nested objects, but that I can only do this check once successfully. Has anybody tried to solve a problem like this? I'll provide examples of my results for specific objects if you need more specific. Thanks!

推荐答案

一个简单的解决方案是对对象进行JSON字符串化并比较它们的字符串表示形式.正如@Jan所说的...

A simple solution would be to JSON stringify the objects and compare their string representations. As @Jan mentions ...

这仅在对象以完全相同的方式初始化时才有效 道路.如果属性相同但顺序不同,它将 失败

this will only work if the objects are initialized in the exact same way. If the properties are the same but in a different order, it will fail

...这有点脆弱,但可能适合您的目的.

...this is a bit brittle but may suit your purposes.

更多推荐

对“深度相等"进行功能检查.嵌套对象

本文发布于:2023-11-29 22:18:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1647793.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:嵌套   深度   对象   功能   quot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!