如何检查两个数组是否相等

阅读时长 3 分钟读完

在 Javascript 中,比较两个数组是否相等是一个非常普遍和重要的操作。但是,由于 Javascript 对数组的比较有一些特殊的行为,因此需要特殊的处理方法。

直接比较

首先看一下最直接的比较方法:使用 === 运算符直接比较两个数组:

结果是 false,这是因为 === 运算符比较的是对象的引用,两个数组虽然内容相同,但是它们的引用不同。

比较元素

那么如何比较两个数组的元素呢?最简单的方法是使用循环逐个比较数组中的元素:

-- -------------------- ---- -------
-------- -------------- -- -
  -- -- --- -- ------ -----
  -- -- -- ---- -- - -- ----- ------ ------
  -- --------- --- --------- ------ ------

  --- ---- - - -- - - --------- ---- -
    -- ----- --- ----- ------ ------
  -
  
  ------ -----
-

----- - - --- -- ---
----- - - --- -- ---

-------------------------- ---- -- ----

这段代码通过循环逐个比较数组中的元素,如果有任何一个元素不相等,则返回 false。需要注意的是,这个函数不支持比较嵌套数组。

比较顺序

还有一种情况需要考虑,就是两个数组顺序不同但是内容相同的情况。对于这种情况,需要将数组排序后再进行比较:

-- -------------------- ---- -------
-------- -------------- -- -
  -- -- --- -- ------ -----
  -- -- -- ---- -- - -- ----- ------ ------
  -- --------- --- --------- ------ ------

  ---------
  ---------

  --- ---- - - -- - - --------- ---- -
    -- ----- --- ----- ------ ------
  -
  
  ------ -----
-

----- - - --- -- ---
----- - - --- -- ---

-------------------------- ---- -- ----

这段代码在比较之前先分别对两个数组进行了排序,然后再逐个比较数组中的元素。

使用 JSON

最后,还有一种比较数组的方法是使用 JSON.stringify 将数组转换成字符串,然后直接比较字符串:

需要注意的是,这种方法对于包含非简单类型(如函数)的数组无效。

总结

比较两个数组是否相等是 Javascript 开发中非常常见的操作。需要注意的是,直接使用 === 运算符比较数组会得到错误的结果,需要使用循环逐个比较数组中的元素。如果需要比较顺序不同但是内容相同的数组,需要先将数组排序。另外,使用 JSON.stringify 将数组转换成字符串也是一种比较方法,但是对于包含非简单类型的数组无效。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/9664

纠错
反馈