第一次学习 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 表示的底层数组是否相等,而不必逐个元素进行比较?a
b
- 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