当前位置: 首页 > 面试题库 >

为什么相等检查不适用于数组

刘阳舒
2023-03-14
问题内容

我开始于:

"1:2".split(':') == ["1","2"]; 
// false

然后尝试:

[1,2] == [1,2];
// false

最终:

[] == []; 
// false

从那以后我发现:

"1:2".split(':').toString() == [1,2].toString();
// true

因此,我已经解决了最初的问题(有点),但是为什么数组不能互相匹配?


问题答案:

Javascript数组是对象,您不能简单地使用相等运算符==来了解那些对象的 内容
是否相同。如果两个物体实际上是完全一样的情况下(如平等运营商将只测试myObjVariable==myObjVariable,作品nullundefined太)。

如果您需要检查两个数组是否相等,我建议只遍历两个数组并验证所有元素具有相同的值(并且两个数组具有相同的长度)。

关于自定义对象的相等性,我将构建一个特定的equals函数,并将其添加到您的类的原型中。

考虑到最终您将两个数组都转换为String并测试了结果字符串的相等性,因此您可能有一天可以考虑使用类似但更通用的技术,在许多地方都可以找到它的描述:

JSON.stringify(OBJ1) === JSON.stringify(OBJ2)

好吧, 不要

如果这些对象实例的属性顺序始终相同,这可能会起作用,但是这会为难以追踪的极其讨厌的错误打开大门。始终倾向于采用更明确的方法,只需编写一个干净易读的函数即可测试是否需要检查所有必填字段。



 类似资料:
  • 让我澄清一下我的问题,OnCreate方法用于初始化视图并展平布局,因此我认为,如果OnCreate方法在一切之前运行,意味着我的EditText字段为空意味着为空,那么这个条件是如何工作的。但它运行良好,这意味着我理解错误。请告诉我我错过了什么。 代码片段取自google codelabs,我们在那里提供电话号码。在editText中,通过点击设备内置键盘上的发送按钮,我们启动电话应用程序来拨打

  • 我运行以下php代码: 并获得以下输出: 我希望在调用setlocale(LC_ALL,'de_de.utf8')之后,ctypeèalpha将接受像äöüß这样的德语字符,如文档中所述:“如果文本中的每个字符都是来自当前语言环境的字母,则返回TRUE,否则返回FALSE。”但事实并非如此。我做错了什么? PHP版本是:5.3。10-1ubuntu3。8.

  • 问题内容: 使用Python 3: 我想检查是否相等: 但: 您知道为什么值不相等吗? 我已经使用Python 3.4和3.5进行了测试。 提出这个问题之后,我在Python-Ideas邮件列表中发布了更多详细信息: https://mail.python.org/pipermail/python- ideas/2015-December/037472.html 问题答案: 在Python 3中,

  • https://godbolt.org/z/P97MaK 我玩的概念和预期d::is_equality_comparable工作矢量,但它没有。 编译错误在 内部失败,而不是在受概念保护的函数边界处失败。 这是错误还是预期行为?

  • 问题内容: 假设我有这个模型: 现在,如果我想高效地查看相册中的一部分照片。我这样做是这样的: 这只会执行两个查询,这正是我所期望的(一个查询得到相册,然后一个查询,例如“ SELECT * IN photos WHERE photoalbum_id IN()”。 一切都很棒。 但是,如果我这样做: 然后用!进行大量查询!我是在做错什么,还是django不够聪明,以至于它已经获取了所有照片并可以在