今天在实现一个需求的时候,需要去判断两个数组是否相等,看似简单的问题,实则还挺复杂。
首先我们知道数组是引用数据类型,在==或者===比较时,比较的是其地址值,所以[1,2] == [1,2] [1,2] === [1,2] 二者输出的都是false,
那么如何比较两个数组是否相等呢
1. toString()或者join():
它们的原理都是将二者转换成字符串,针对某一些数组可以进行判断,如:[1,2,3].toString() === [1,2,3].toString() 和 [1,2,3,'hah'].toString() === [1,2,3,'hah'].toString()都可以打印出true,
但是有些数组则是无法进行判断比如:[{name:'tu'},{sex:'男'}]这类的数组则无法用这种方法比较,因为对象转换成字符串是[object Object],最终都会打印出true
2. ()
用这个方法可以很好的解决这个问题,([{name:'tu'},{sex:'男'}]) == ([{name:'tu'},{sex:'男'}]) true
([{name:'tu'},{sex:'男'}]) == ([{name:'min'},{sex:'女'}]) false