讨论js比较两个数组(对象)是否相等的范围

注意:目前网络的解答方案有很多了,但是很多人还是觉得并不是自己想要的,本篇文章帮助各位同仁确认范围和需求。

注意:两个数组或对象的直接比较,是对于地址的比较,不是来自同一地址的均不相等。

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

https://segmentfault.com/a/1190000018266129

https://www.cnblogs.com/abc-x/p/10780464.html

原文地址:https://www.cnblogs.com/zhaozhou/p/12394494.html