在 JavaScript 中检查 2 个数组是否相等的简单方法
admin
2024-03-19 23:10:23

第一次学习 JavaScript 时,我们都这样做了......

const a = [1,2];
const b = [1,2];if (a === b) console.log('Equal!');

如果你试过这个,那么你知道每次都会返回 false。a === b

为什么?

因为数组变量是通过引用而不是按值分配的。

Sois 只是一个指向内存中某处位置的指针。 虽然“b”是指向内存中不同位置的另一个指针,但它也恰好是存储。a[1,2][1,2]

当您检查是否时,您实际上是在检查他们的成员位置,而不是他们指向的值。a === b

那么什么给了呢?

有没有简单的方法来检查由 and 表示的底层数组是否相等,而不必逐个元素进行比较?ab

这是完成它的快速作弊...

const d = [1,2,4,5,6];
const c = [1,2,4,5,6];if (JSON.stringify(d) === JSON.stringify(c)) console.log('Equal!');

为什么会这样?

到底是什么?JSON.stringify(...)

JSON.stringify(...)获取数组(或对象)并返回其字符串表示形式。

是串的!

例如:

JSON.stringify([7,8,9])

会回来的。由于该值是一个字符串,因此您可以将其与另一个数组的值进行比较,该数组也作为字符串返回。:)'[7,8,9]'JSON.stringify(...)

这个技巧甚至适用于双数组(以及一般的多维数组)。您也可以通过这种方式比较对象,只要每个对象的属性顺序相同即可。

另一个提示

如果你想比较 2 个数组是否包含相同的值,无论顺序如何,那么只需使用方法首先对两个数组进行排序,然后使用进行比较!Array.sort()JSON.stringify

相关内容

热门资讯

寒潮蓝色预警 黄淮、江淮等地局... 经济观察网 据央视新闻客户端消息,中央气象台1月17日18时继续发布寒潮蓝色预警:受寒潮影响,1月1...
硬来!“欧盟想强制成员国逐步淘... 【文/观察者网 阮佳琪】 欧盟又要“作妖”。据《金融时报》1月17日报道,欧盟拟禁止中国供应商涉足欧...
专访|“高市错误言论是在喊大家... “高市早苗正在做的事,就像对大家喊‘虽然是红灯,只要大家一起闯就不可怕;台湾问题这条红线,只要大家一...
坐高铁不用自己扛行李了!多地火... 来源:新华社微信公众号还有不到一个月,就要春节了!大家已经规划好今年的出行安排了吗?这里有个好消息,...