3 回答
TA贡献2080条经验 获得超4个赞
Javascript数组是对象,您不能简单地使用相等运算符==来理解这些对象的内容是否相同。等于运算符将仅测试两个对象实际上是否完全相同(例如myObjVariable==myObjVariable,适用于null且undefined也是如此)。
如果你需要检查两个数组是否相等,我建议只遍历两个数组并验证所有元素是否具有相同的值(并且两个数组的长度相同)。
关于自定义对象的相等性,我会构建一个特定的equals函数,然后将它添加到类的原型中。
考虑到最终你将两个数组转换为String测试结果字符串的相等性,有一天你可以考虑使用一个类似但更通用的技术,你会发现它在很多地方描述:
JSON.stringify(OBJ1) === JSON.stringify(OBJ2)
好吧,不要。
虽然如果属性的顺序对于那些对象实例总是相同的,这可能会起作用,但是这样就可以打开那些难以追踪的非常讨厌的错误。总是喜欢更明确的方法,只需编写一个干净且可读的函数来测试相等性检查所有必需的字段。
TA贡献1845条经验 获得超8个赞
该==
用于在JavaScript对象操作者仅检查是否该对象是相同的实际对象引用,而不是如果它们包含相同内容的两个单独的对象。没有内置运算符来检查它们是否包含相同的内容。您必须自己编写一个函数来进行这种比较。
只要数组元素只包含原始值(而不是其他对象),您的字符串转换就是比较两个数组的一种方法。如果数组元素可以包含其他元素,那么您必须确保这些对象本身也转换为代表性字符串。
并且,转换为字符串不会在包含的数组元素与包含的数组元素之间分辨"4"
,4
因为两者都转换为"4"
字符串表示形式。
添加回答
举报