JavaScript实现两个数组的交集

请参考以下完整攻略:

问题描述

如何用JavaScript实现两个数组的交集?

解决方案

下面提供几种常见的解决方法。

方法一:双重循环法

最基本的方法就是使用双重循环,比较两个数组中的每个元素,找出相同的元素。这种方法优点在于思路简单,容易理解,缺点在于时间复杂度较高,当数组规模较大时性能很差。

const arr1 = [1, 3, 5, 7, 9];
const arr2 = [2, 4, 6, 8, 10];
const result = [];
for (let i = 0; i < arr1.length; i++) {
  for (let j = 0; j < arr2.length; j++) {
    if (arr1[i] === arr2[j]) {
      result.push(arr1[i]);
    }
  }
}
console.log(result); // []

方法二:利用ES6的Set数据结构

使用ES6的Set数据结构可以轻松解决数组交集问题,只需将其中一个数组转为Set对象,然后使用Set对象自带的交集运算符“&”,得到两个数组的交集。这种方法简单、性能优秀。

const arr1 = [1, 3, 5, 7, 9];
const arr2 = [2, 4, 6, 8, 10];
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const result = [...set1].filter(item => set2.has(item));
console.log(result); // []

方法三:利用for循环和includes方法

使用for循环遍历数组,并利用数组自带的includes方法判断当前元素是否在另一个数组中出现过。相对于双重循环法,这种方法的时间复杂度要低,但是相对于利用Set交集方法,依然较低。

const arr1 = [1, 3, 5, 7, 9];
const arr2 = [2, 4, 6, 8, 10];
const result = [];
for (let i = 0; i < arr1.length; i++) {
  if (arr2.includes(arr1[i])) {
    result.push(arr1[i]);
  }
}
console.log(result); // []

示例说明

下面演示一个实际应用场景中使用交集方法的例子:

假如我有两个数组,分别代表两个部门的员工名单,我想知道两个部门的共同员工有哪些。

const department1 = ['小明', '小红', '小美', '小张'];
const department2 = ['小黄', '小绿', '小美', '小张'];
const set1 = new Set(department1);
const set2 = new Set(department2);
const result = [...set1].filter(item => set2.has(item));
console.log(result); // ['小美', '小张']

从运行结果可以看出,两个部门的共同员工为小美和小张。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现两个数组的交集 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript中将数组进行合并的基本方法讲解

    JavaScript中将数组进行合并的基本方法有多种, 下面我将详细介绍其中的三种方法。 使用concat()方法 concat()方法是JavaScript中最基本的合并数组的方法。它可以将多个数组连接成一个数组。我们可以在一个数组末尾添加一个或多个数组。这个方法会返回一个新数组,而不会改变原始数组。具体用法如下: let arr1 = ["A&…

    JavaScript 2023年5月27日
    00
  • 代理模式在vue中的使用示例解析

    接下来我将为您详细讲解“代理模式在Vue中的使用示例解析”的完整攻略: 什么是代理模式? 代理模式是设计模式的一种,它通过使用一个代理对象来控制原始对象的访问权限,从而可以在不改变原始对象的情况下,添加额外的功能或控制访问权限。代理对象通常充当中介者的角色,客户端与代理交互,并由代理将请求发送到实际的对象,代理还可以处理请求,如缓存、验证、记录日志等。 在V…

    JavaScript 2023年6月11日
    00
  • JS将unicode码转中文方法

    将 Unicode 码转换为对应中文字符的方法,通常使用 JavaScript 中的 String.fromCharCode() 方法。该方法能够将 Unicode 码值转换为对应字符,需要传入 Unicode 码值(数值形式)作为参数,返回对应的字符。 下面是将 Unicode 码转换为对应中文字符的示例: 示例 1: const unicodeStr =…

    JavaScript 2023年5月19日
    00
  • JavaScript 装逼指南(js另类写法)

    JavaScript 装逼指南(js另类写法) 简介 本文介绍了一些十分妙趣横生的 JavaScript 另类写法,可用于装逼或增加代码趣味性。 示例 1. 用递归函数实现累加器 const add = (n) => (n === 0 ? 0 : n + add(n – 1)); console.log(add(4)); // 10 这个累加器思路非常…

    JavaScript 2023年5月18日
    00
  • js、jquery图片动画、动态切换示例代码

    下面是关于 “js、jquery图片动画、动态切换示例代码” 的详细攻略。 1. 简介 首先,图片动画是网页设计中非常重要的一部分,能够为网页提供更加生动、具有吸引力的效果。而 JavaScript 和 jQuery 是实现图片动画的最好选择。 2. 实现图片动画的具体代码 下面我们以两个示例代码的形式,帮助你快速学习如何使用 JavaScript 和 jQ…

    JavaScript 2023年6月10日
    00
  • vue如何监听页面缓存事件

    我们可以通过Vue的生命周期函数来监听页面缓存事件,其中包括 beforeRouteLeave 和 beforeRouteEnter 这两个函数。 beforeRouteLeave beforeRouteLeave 是在Vue组件即将被离开路由时被调用的函数,我们可以在这个函数中做一些路由离开前的准备工作,比如保存一些数据、询问用户是否需要保存等。 示例一:…

    JavaScript 2023年6月11日
    00
  • javascript获取时间戳的5种方法详解

    JavaScript获取时间戳的5种方法详解 时间戳是指一个时间点与1970年1月1日的间隔时间,通常是表示 Unix 时间或 POSIX 时间,可以用于表示距离某一时间点的时间差。获取时间戳在 JavaScript 开发中是一个比较常见的需求,下面将详细介绍获取时间戳的 5 种方法。 方法一:使用JS内置Date对象的getTime方法 Date 对象的 …

    JavaScript 2023年5月27日
    00
  • 关于JavaScript中URL对象的一些妙用

    关于JavaScript中URL对象的一些妙用,我来为大家详细讲解一下。 什么是URL对象 URL对象是JavaScript中的一个内置对象,它表示一个统一资源定位符,即URL。它可以帮助我们解析并操作URL。 在JavaScript中,我们可以通过创建一个URL实例来创建一个URL对象。其语法如下: let urlObject = new URL(urlS…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部