我开始于:
"1:2".split(':') == ["1","2"]; // false
然后尝试:
[1,2] == [1,2]; // false
最终:
[] == []; // false
从那以后我发现:
"1:2".split(':').toString() == [1,2].toString(); // true
因此,我已经解决了最初的问题(有点),但是为什么数组不能互相匹配?
Javascript数组是对象,您不能简单地使用相等运算符==来了解那些对象的 内容 是否相同。如果两个物体实际上是完全一样的情况下(如平等运营商将只测试myObjVariable==myObjVariable,作品null和undefined太)。
==
myObjVariable==myObjVariable
null
undefined
如果您需要检查两个数组是否相等,我建议只遍历两个数组并验证所有元素具有相同的值(并且两个数组具有相同的长度)。
关于自定义对象的相等性,我将构建一个特定的equals函数,并将其添加到您的类的原型中。
equals
考虑到最终您将两个数组都转换为String并测试了结果字符串的相等性,因此您可能有一天可以考虑使用类似但更通用的技术,在许多地方都可以找到它的描述:
String
JSON.stringify(OBJ1) === JSON.stringify(OBJ2)
好吧, 不要 。
如果这些对象实例的属性顺序始终相同,这可能会起作用,但是这会为难以追踪的极其讨厌的错误打开大门。始终倾向于采用更明确的方法,只需编写一个干净易读的函数即可测试是否需要检查所有必填字段。