JS 两个数组如何对比

192 阅读1分钟

image.png

  • 其实道理很简单,就像数组,对象,都是引用类型,变量a和变量b都是存储的[1,2,3]在堆中的引用地址,两者对比,肯定是不相等的。
  • 知道这个原理,就会发现,这个bug其实很简单。

两个数组如何比较是否相等?

  • 上述问题已经描述清楚了,那我们如何解决掉这个bug呢,显然直接全等于进行比较是有问题的,那么如何对比两个数组?
  • 查看了很多有关于js中数组对比的方案,没找到比较靠谱的方案,但是我依旧整理了一下我个人收集的,对比两个数组的方法。

方法

将数组转换成字符串,对比两个字符串是否完全相等


let a=[1,2,3]

let b=[1,2,3]

console.log(a.toString(),b.toString(),a.toString()===b.toString())

console.log(JSON.stringify(a),JSON.stringify(b),JSON.stringify(a)===JSON.stringify(b))

打印效果

**

1,2,3   1,2,3   true

[1,2,3] [1,2,3] true

弊端(这种方式依旧存在一些弊端)

有一说一这种方式是百度到的最常见的,而且的最方便的,但是依旧会存留问题

1.数组顺序不一致,(可以使用.srot()做一下排序)

2.由于转义成了字符串,会导致原本是数字的数据,会变成字符串类型,可能会影响对比的准确性