注意:目前网络的解答方案有很多了,但是很多人还是觉得并不是自己想要的,本篇文章帮助各位同仁确认范围和需求。
注意:两个数组或对象的直接比较,是对于地址的比较,不是来自同一地址的均不相等。
1.两个简单的数组或对象
A.无数组对象嵌套,且不考虑顺序或值类型的异同,可采用方法简便为:
转换为字符串类型进行比较,常用方法toString
B.无数组对象嵌套,考虑顺序但不考虑值类型的异同,可采用方法简便为:
数组可以通过sort排序再进行toString对比,对象则可以通过遍历,用hasOwnProperty先行比较属性是否存在再进行单个值对比
C.无数组对象嵌套,考虑顺序且考虑值类型的异同,可采用方法为:
通过遍历对比各个值的异同,可通过添加类型、长度等判断优化循环
2.两个复杂的数组或对象
A.数组对象嵌套,且不考虑顺序或值类型的异同,可采用方法简便为:
转换为字符串类型进行比较,常用方法toString
B.数组对象嵌套,考虑顺序但不考虑值类型的异同,可采用方法简便为:
通过循环+递归的方式,往复执行1方式的B操作即可
C.数组对象嵌套,考虑顺序且考虑值类型的异同,可采用方法为:
通过循环+递归的方式,往复执行1方式的C操作即可
附网络一些解决方法的地址:
https://blog.csdn.net/gs981600308/article/details/90401843
https://www.jianshu.com/p/7407bd65b15d