写leetcode的时候发现数组是不能直接被==
和===
直接比较的。
因为JavaScript里面Array是对象,==
或===
操作符只能比较两个对象是否是同一个实例,也就是是否是同一个对象引用。目前JavaScript没有内置的操作符判断对象的内容是否相同。
但是惯性思维让人以为数组也是值,是可以比较的。
如果要比较数组是否相等,就只能遍历数组元素比较。
查了网上的资料,发现可以用Object.toString()
来做,但是这样会有很大的隐患
。
这种方法在某些情况下是可行的,当两个数组的元素顺序相同且元素都可以转换成字符串的情况下确实可行,但是这样的代码存有隐患,比如数字被转换成字符串,数字“1”和字符串“1”会被认为相等,可能造成调试困难,不推荐使用。
具体正确的方法有点长,直接参考原文:
池月 - 博客