在本教程中,我们重点关注 JavaScript 数组交集。查找两个数组之间的交集意味着查找 和 中的公共arrayA元素arrayB

为了通过编程来做到这一点,我们同时使用_.intersection()函数filter()indexOf()方法,filter()并且includes()同时has()使用set带有includes()函数的方法。

目录

1.在JavaScript中使用_.intersection()方法查找数组交集

2.在JavaScript 中使用filter( ) With indexOf()& includes()方法查找数组交集

3.使用Set的has()方法在JavaScript中查找数组交集

4.使用jQuery在JavaScript中查找数组交集


1.在JavaScript中使用_.intersection()方法查找数组交集

_.intersection()是 JavaScriptUnderscore库中的一个函数,它从传递的数组中返回公共值数组。使用此函数的优点是可以传递两个以上的数组。

您可以在此处深入了解Underscore库的详细信息。

确保将Underscore库包含在<head>标签中。

示例代码:

let results = _.intersection([2, 3, 4, 5, 6], [3, 4, 6, 2]);
console.log(results);

输出: 

[2, 3, 4, 6]

假设如果我们有字符串数组,它_.intersection()仍然像处理数字数组一样工作,并在数组中寻找公共元素。

请参阅下面给出的示例代码。

let results = _.intersection(["mehvish", "ashiq", "martell", "daniel"],["daniel", "raza", "christopher"],["ashiq", "daniel", "moultrie"]);
console.log(results);

输出:

["daniel"]

_.intersection()如果我们传递具有null""(空字符串)undefined值的数组,您认为会产生错误吗?不,不是的。

它仍然会尝试在所有提供的数组中找到相同的元素。看看下面的代码来练习。

let results = _.intersection(["null", "", "undefined", 3],[3, "null", ""]);
console.log(results);

输出: 

["null", "", 3]

2.在JavaScript 中使用filter( ) With indexOf()& includes()方法查找数组交集

filter()函数创建一个全新的数组,其中包含通过给定函数实施的评估的元素。

该IndexOf()方法为我们提供了 a 值第一次出现的位置,-1如果未找到则返回。

另一方面,该includes()方法确定数组在其条目中是否具有特定值。它返回truefalse取决于输入。

示例代码:

let arrayA = [2,3,5,4,7,9];
let arrayB = [2,9,4,7];
const filteredArray = arrayA.filter(value => arrayB.includes(value));
console.log(filteredArray);

输出: 

[2, 4, 7, 9]

示例代码: 

let arrayA = [2,3,5,4,7,9];
let arrayB = [2,9,4,7];
const filteredArray = arrayA.filter(value => arrayB.indexOf(value) !== -1);
console.log(filteredArray);

输出: 

[2, 4, 7, 9]

3.使用Set的has()方法在JavaScript中查找数组交集

includes()方法查找数组中的每个元素,这意味着它的时间复杂度为O(n)

在这里,该has()方法出现并在恒定时间内返回输出,也称为O(1).

我们必须将我们的数组转换为sets,然后编写一个for循环来使用该has()函数来遵循此技术。

示例代码:

let arrayA = [2,3,5,4,7,9];
let arrayB = [2,9,4,7];
// converting into Set
let setA = new Set(arrayA);
let setB = new Set(arrayB);
for (let i of setB){if (setA.has(i)){console.log(i);}
}

输出: 

2
9
4
7

如果我们想将公共值放在单独的数组中怎么办?我们可以使用 该push()方法来插入commonValues数组值。

通过以下代码练习学习,您可以在此处找到有关该push()方法的更多信息。

let arrayA = [2,3,5,4,7,9];
let arrayB = [2,9,4,7];
// converting into Set
let setA = new Set(arrayA);
let setB = new Set(arrayB);
let commonValues = [];for (let i of setB) {if (setA.has(i)) {commonValues.push(i);}}console.log(commonValues);

输出: 

[2, 9, 4, 7]

4.使用jQuery在JavaScript中查找数组交集

如果您喜欢使用 jQuery,那么以下解决方案很不错。该grep()函数查找满足该filter()功能的数组元素。

请记住,原始数组不受此函数的影响。inArray()就像 JavaScriptindexOf()方法一样。

它还在数组中搜索值/元素并返回其位置。inArray()如果在数组中找不到值,则返回 -1 。

示例代码:

let arrayA = [2,3,5,4,7,9],arrayB = [2,9,4,7];$.arrayIntersect = function(arrA, arrB){return $.grep(arrA, function(i){return $.inArray(i, arrB) > -1;});
};
console.log($.arrayIntersect(arrayA, arrayB) );

输出:

[2, 4, 7, 9]

JavaScript 数组交集相关推荐

  1. JavaScript中数组交集的最简单代码

    在javascript中实现数组交集的最简单,无库代码是什么? 我想写 intersection([1,2,3], [2,3,4,5]) 并得到 [2, 3] #1楼 通过使用.pop而不是.shif ...

  2. javascript 数组求交集/差集/并集/过滤重复

    最近在小一个小程序项目,突然发现 javscript 对数组支持不是很好,连这些基本的功能,都还要自己封装.网上查了下,再结合自己的想法,封装了一下,代码如下. //数组交集 Array.protot ...

  3. 花式玩转 JavaScript 数组,看完后我直接删了 lodash

    作者简介: 李中凯老师,8年前端开发,前端负责人,擅长JavaScript/Vue. 公众号:1024译站 掘金文章专栏:https://juejin.im/user/57c7cb8a0a2b5800 ...

  4. [JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)

    课程来源:后盾人 上一篇的内容:[JavaScript] JavaScript数组挖掘,不只是讲数组哟 数组引用类型分析,多维数组,用Array.of为数组创建细节,类型检测与转换,在一个数组后面加一 ...

  5. java数组交集_Java 实例 – 数组交集

    Java 实例 - 数组交集 以下实例演示了如何使用 removeAll () 方法来删除包含在另外一个数组中的数组元素: /* author by w3cschool.cn 文件名:Main.jav ...

  6. 这是如何更好地利用JavaScript数组的方法

    by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...

  7. Javascript 数组

    Javascript 数组 Javascript中的Array可以包含任意数据类型,并通过索引来访问每个元素. 要取得Array的长度,直接访问length属性: var arr = [1, 2, 3 ...

  8. JavaScript 数组拼接打印_JavaScript 数组方法

    JavaScript 数组方法 JS 数组 JS 数组排序 JavaScript 数组的力量隐藏在数组方法中. 把数组转换为字符串 JavaScript 方法 toString() 把数组转换为数组值 ...

  9. 如何将JavaScript数组信息导出到csv(在客户端)?

    本文翻译自:How to export JavaScript array info to csv (on client side)? I know there are lot of questions ...

最新文章

  1. 【Qt】Qt样式表总结(四):CSS盒子模型
  2. gzip格式分析与识别
  3. No module named ‘sklearn.utils.linear_assignment_‘
  4. java程序设计第一次作业
  5. UVALive 8513 lovers 2017 西安区域赛 B 贪心+multiset
  6. java二叉树的运用
  7. mysql端口测试报错_MySQL报错:2003 - Can't connect to MySQL server on 'localhost' (10038)
  8. 大竹中学2021高考成绩查询,四川大竹中学2021录取分数线
  9. 关于阅读java编程思想和effective java的一些看法
  10. mailcore -- POP
  11. 计算机科学实验班高考线,北京工业大学计算机科学与技术(实验班)专业2015年在北京理科高考录取最低分数线...
  12. 将连接数据库的地址写在web.config里面,后台直接调用
  13. 第九章 限制性图谱和正则表达式
  14. 耗时1个月整理的这份英语资源!一次性全部分享给你,手慢无!
  15. android 模拟器 安装,夜神安卓模拟器安装环境
  16. Webix JavaScript UI 新版得心应手
  17. matlab数值微积分与方程数值求解,六、数值微积分与方程求解(MATLAB学习笔记)
  18. 系统架构设计师-考试大纲
  19. Windows下如何清除文件资源管理器搜索框中的搜索记录?
  20. flutter CustomPainter 简单绘制 三角形 多边形

热门文章

  1. linux中touch命令如何使用方法,Linux系统下touch命令的使用方法
  2. python就业前景如何_Python是什么语言?Python就业前景如何?
  3. 给网线安装水晶头——一次惊动整个实验室的实践
  4. wxid转微信号方式
  5. 国内外网络安全类网站
  6. testufo测试刷新率测试_数字里的秘密,144Hz和60Hz刷新率的区别
  7. CentOS7环境安装Kubernetes四部曲之二:配置模板和安装master
  8. cnpm不是内部命令的解决方案:配置环境变量
  9. 【小白必懂】C语言回文数判断
  10. 联发科中端芯片策略为何未能拯救业绩?