Js如何判断两个数组是否相等?

这篇具有很好参考价值的文章主要介绍了Js如何判断两个数组是否相等?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



日常开发,时不时会遇到需要判定2个数组是否相等的情况,需要实现考虑的场景有:

  • 先判断长度,长度不等必然不等
  • 元素位置
  • 其他情况考虑
    • '1'1 (Object的key是字符串, Map的key没有限制)
    • NaN
    • nullundefined

1、通过数组自带方法比较

// 方式1
function isArrEqual1(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  return arr1.every((v, i) => v === arr2[i]);
  // return !arr1.some((v, i) => v !== arr2[i]);
  // return arr1.filter((v, i) => v !== arr2[i]).length === 0;
  // return arr1.findIndex((v, i) => v !== arr2[i]) === -1;
}

// 测试
const arr1 = [-2, "-1", 0, 0.1, 1, "2", "a", "", undefined, null],
  arr2 = [-2, "-1", 0, 0.1, 1, "2", "a", "", undefined, null];

isArrEqual1(arr1, arr2); // true

数组自带的方法,比较适合的有:every、some、filter、findIndex

这种方式严格限制了数组元素长度、类型、位置必须一致。

注意包含NaN也无法比较!NaN是JS中唯一一个与自身不相等的存在!判断NaN是否属于同一个值得用Object.is(),如:Object.is(NaN, NaN); // true

2、通过循环判断

// 方式2
function isArrEqual2(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  for (let i = 0; i < arr1.length; i++) {
    if (arr1[i] !== arr2[i]) {
      return false;
    }
  }
  return true;
}

这种判定方法限制及说明同上述方法1。

3、toString()

// 方式3
function isArrEqual3(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  return arr1.toString() === arr2.toString();
}

// 测试
isArrEqual3(arr1, arr2); // true

const arr3 = ['', 1, null, undefined, {}, { a: 1 }, NaN, [], [2, 3], new Date()],
  arr4 = ['', "1", undefined, null, {}, { a: 2 }, NaN, [], [2, "3"], new Date()];

isArrEqual3(arr3, arr4); // true

toString 方法是Object类型对象的实例方法,作用是返回一个对象的字符串形式。

这种方式限制了数组长度和元素位置,但是会发现有些元素类型没有严格限制,这是由于js本身进行的数据隐式转换!

在控制台查看通过toString转化后的数组,得到的结果如下:
Js如何判断两个数组是否相等?,web前端,JavaScript,javascript,前端,开发语言,判断两个数组相等,数组比较,js数组比较,js

此外,对数组、空数组、对象、空对象等引用类型,由于toString转换结果都是[object Object],所以在比较的时候都会判定为相等!

还有,需要注意:

null == undefined // true
null === undefined // false

4、join()

// 方式4
function isArrEqual4(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  return arr1.join() === arr2.join();
}

join 方法是数组的一个实例方法,如果join这个方法如果不传如分割符,其实作用几乎和toString一样,所以实现效果和限制同toString。
Js如何判断两个数组是否相等?,web前端,JavaScript,javascript,前端,开发语言,判断两个数组相等,数组比较,js数组比较,js

5、JSON.stringify()

// 方式5 [推荐]
function isArrEqual5(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  return JSON.stringify(arr1) === JSON.stringify(arr2);
}

// 测试
isArrEqual5(arr1, arr2); // true
isArrEqual5(arr3, arr4); // false

const arr5 = [undefined, null, "", {}, { a: 1 }, NaN, [], [2, 3], new Date()],
  arr6 = [undefined, null, "", {}, { a: 1 }, NaN, [], [2, 3], new Date()];

isArrEqual5(arr5, arr6); // true

JSON.stringify 用于将一个对象或值转换成JSON字符串,转换后结果会带双引号。
Js如何判断两个数组是否相等?,web前端,JavaScript,javascript,前端,开发语言,判断两个数组相等,数组比较,js数组比较,js

从测试结果可以看到,这个比较方式也严格的限制了数组长度、元素位置和元素类型,在日常中比较推荐此种方案~文章来源地址https://www.toymoban.com/news/detail-836204.html

到了这里,关于Js如何判断两个数组是否相等?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript判断两个数组相等的四类方法

    在JavaScript中,数组本质上是一种特殊的对象,它的类型值会返回 object 。 如果我们需要比较两个数组是否相等,不能像比较基本类型(String、Number、Boolean等)一样,使用 === (或 == ) 来判断,所以如果要比较数组是否相等,需要使用一些特殊方法。关于JS类型的判断,可见博文

    2024年02月09日
    浏览(66)
  • js 判断两个字符串是否相等(有两种方法)

    使用比较运算符判断两个字符串是否相等 可以使用比较运算符 === 或 == 来判断两个字符串是否相等。例如: 在上述代码中,我们定义了两个字符串变量 str1 和 str2 ,并使用 === 运算符来比较它们的值。如果两个字符串相等,则输出 两个字符串相等 ;否则输出 两个字符串不相

    2024年02月05日
    浏览(78)
  • Go语言如何判断两个对象是否相等

    在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如: 单元测试 :编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等。 数据结构操作 :在使用 map 等数据结构时,可能需要判断两个对

    2024年02月07日
    浏览(145)
  • Python字符串比较:如何判断两个字符串是否相等?

    Python字符串比较:如何判断两个字符串是否相等? 在Python编程中,字符串是最常用的数据类型之一。当我们需要比较两个字符串时,通常需要判断它们是否相等。这篇文章将详细介绍Python中比较两个字符串的方法。 使用“==”运算符比较字符串 在Python中,可以使用“==”运算

    2023年04月11日
    浏览(72)
  • java 判断两个List是否包含 判断两个list相等

    java 判断两个List是否包含 判断两个list相等 https://blog.51cto.com/u_12855/7333853 1、直接使用equals()比较 众所周知,两个列表具有完全相同的元素并且具有完全相同的顺序时,它们是相等的。因此, 如果我们业务要求两个list顺序一致,可以使用equals()方法进行相等性检查: 即使

    2024年02月04日
    浏览(66)
  • JavaScript - 判断当前时间是否在指定区间内,例如:9:00~12:00(检查当前时间是否处于规定的两个时间段范围内),适用于 vue.js / uniapp / 微信小程序等前端项目

    例如,您想知道当前时间是否处于 9:00 ~ 12:00 时间区间内,然后根据这个判断进而实现业务逻辑。 如下示例所示, 本文提供一个函数,您只需要传入 2 个时间区间,便可得出当前时间是否在该时间区间范围内: 您可以一键复制,直接粘贴到您的项目中。 您只需要传入开始时

    2024年02月16日
    浏览(62)
  • 【python基础知识】python中怎么判断两个字符串是否相等

    目录 有哪些判断方法 1. == 运算符 2. is 运算符 有哪些特殊情况 1. 字符串中包含空格、换行符、制表符等特殊字符 2. 字符串编码格式的不同 3. 字符串对象的创建方式不同 注意事项 1. 避免使用is运算符进行字符串比较 2. 注意空格、换行符、制表符等特殊字符的影响 3. 注意字符

    2024年02月08日
    浏览(85)
  • JavaScript数组(四):判断数组相等的4种方法

    在JavaScript中,数组本质上是一种特殊的对象,它的类型值会返回 object 。 如果我们需要比较两个数组是否相等,不能像比较基本类型(String、Number、Boolean等)一样,使用 === (或 == ) 来判断,所以如果要比较数组是否相等,需要使用一些特殊方法。关于JS类型的判断,可见博文

    2024年02月01日
    浏览(52)
  • rust里如何判断字符串是否相等呢?

    在 Rust 中,有几种方法可以判断字符串是否相等。下面是其中几种常见的方法: 使用 == 运算符:可以直接使用 == 运算符比较两个字符串是否相等。例如: 这段代码会输出 “字符串不相等”,因为 str1 和 str2 不是相同的字符串。 2. 使用 eq 方法:字符串类型实现了 PartialEq

    2024年02月14日
    浏览(61)
  • 前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?

    一、如何判断对象具有某属性? 如: let obj={name:\\\'zhangsan\\\',age:21} 有以下方法 ( property 为属性名的变量,实际上是key,键名): 1. property in obj 效果如图: in 运算符 2. Reflect.has(obj, property) 效果如图: 关于 Reflect: ① 它是JS的一个内置对象,无构造函数,可以用它遍历对象的key,如

    2023年04月08日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包