如何在 JavaScript 中检查两个数组值是否相等

2025年4月5日 | 阅读 4 分钟

引言

假设您有两个包含若干元素的JavaScript 数组。您想比较这两个数组。为了比较两个数组,您必须确定它们是否具有相同数量的元素,以及所有这些元素是否具有相同的值。如果我们说两个数组满足这两个要求,那么这两个数组就是相等的。然而,比较两个数组并不像看起来那么容易。让我们探讨一下各种方法。

相等性比较

JavaScript 使用引用而不是值来比较对象和数组。这意味着 JavaScript 会检查两个数组是否指向同一个引用,而不是比较它们中的值,即使两个数组包含相同的元素,通常也不是这种情况。这意味着使用严格或松散的相等运算符(即 == 或 ===)来比较 JavaScript 中的两个数组通常会产生false 的结果。让我们通过一个例子来更好地理解这一点。

示例

输出

The arrays have different elements.

正如您在上面的示例中所见,尽管两个数组的值相同,但比较结果为false。但是,您可以使用此函数来检查对象或数组中两个指针是否指向同一元素。让我们通过一个例子来更好地理解这一点。

输出

The arrays have the same elements.

使用 JSON.stringify() 进行数组比较

JSON.stringify () 是 JavaScript 中另一种常用于比较两个数组的方法。JavaScript 的JSON.stringify 方法将对象或数组转换为 JSON 字符串。此函数允许我们序列化每个数组,然后我们可以比较两个序列化后的字符串。让我们尝试理解如何将此方法付诸实践。

示例

输出

The arrays have the same elements.

为了说明这一点,请考虑以下示例。但是,在某些边缘情况下,此解决方案会失败。

输出

The arrays have the same elements.

在此示例中,数组并不相等,但事实证明它们相等。数组各自的第一个元素的值各不相同。然而,在将数组转换为 JSON 字符串时,JSON.stringify() 方法不考虑undefinednull 值。因此,它会直接忽略它们,这就是字符串最终相等的原因。这种情况可能看起来非常罕见,但可能会使问题变得更难解决。

使用 Array.every() 方法进行数组比较

Array.every() 方法测试数组中的所有元素是否都通过了提供的函数实现的测试。如果函数对所有元素都返回 true,那么every() 将返回true。否则,它将返回false

以下是一个检查两个数组值是否相等的示例。

示例

输出

The arrays have equal values.

在此示例中,使用every() 方法来检查array1 中的所有值是否等于array2 中对应的值。如果任何值不相等,every() 方法将返回 false,并且数组将被认为具有不同的值。

结论

在 JavaScript 中,比较两个数组包括确定每个数组是否具有相同数量的元素,以及是否所有这些元素都具有相同的值。

这些方法包括:

  • 使用 == 或 === 运算符进行相等性比较。
  • 使用JSON.stringify() 将数组转换为 JSON 字符串,然后进行比较。
  • 使用Array.every() 方法进行数组比较。