JavaScript 数组交集
在本教程中,我们重点关注 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()
方法确定数组在其条目中是否具有特定值。它返回true
并false
取决于输入。
示例代码:
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 数组交集相关推荐
- JavaScript中数组交集的最简单代码
在javascript中实现数组交集的最简单,无库代码是什么? 我想写 intersection([1,2,3], [2,3,4,5]) 并得到 [2, 3] #1楼 通过使用.pop而不是.shif ...
- javascript 数组求交集/差集/并集/过滤重复
最近在小一个小程序项目,突然发现 javscript 对数组支持不是很好,连这些基本的功能,都还要自己封装.网上查了下,再结合自己的想法,封装了一下,代码如下. //数组交集 Array.protot ...
- 花式玩转 JavaScript 数组,看完后我直接删了 lodash
作者简介: 李中凯老师,8年前端开发,前端负责人,擅长JavaScript/Vue. 公众号:1024译站 掘金文章专栏:https://juejin.im/user/57c7cb8a0a2b5800 ...
- [JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)
课程来源:后盾人 上一篇的内容:[JavaScript] JavaScript数组挖掘,不只是讲数组哟 数组引用类型分析,多维数组,用Array.of为数组创建细节,类型检测与转换,在一个数组后面加一 ...
- java数组交集_Java 实例 – 数组交集
Java 实例 - 数组交集 以下实例演示了如何使用 removeAll () 方法来删除包含在另外一个数组中的数组元素: /* author by w3cschool.cn 文件名:Main.jav ...
- 这是如何更好地利用JavaScript数组的方法
by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...
- Javascript 数组
Javascript 数组 Javascript中的Array可以包含任意数据类型,并通过索引来访问每个元素. 要取得Array的长度,直接访问length属性: var arr = [1, 2, 3 ...
- JavaScript 数组拼接打印_JavaScript 数组方法
JavaScript 数组方法 JS 数组 JS 数组排序 JavaScript 数组的力量隐藏在数组方法中. 把数组转换为字符串 JavaScript 方法 toString() 把数组转换为数组值 ...
- 如何将JavaScript数组信息导出到csv(在客户端)?
本文翻译自:How to export JavaScript array info to csv (on client side)? I know there are lot of questions ...
最新文章
- 【Qt】Qt样式表总结(四):CSS盒子模型
- gzip格式分析与识别
- No module named ‘sklearn.utils.linear_assignment_‘
- java程序设计第一次作业
- UVALive 8513 lovers 2017 西安区域赛 B 贪心+multiset
- java二叉树的运用
- mysql端口测试报错_MySQL报错:2003 - Can't connect to MySQL server on 'localhost' (10038)
- 大竹中学2021高考成绩查询,四川大竹中学2021录取分数线
- 关于阅读java编程思想和effective java的一些看法
- mailcore -- POP
- 计算机科学实验班高考线,北京工业大学计算机科学与技术(实验班)专业2015年在北京理科高考录取最低分数线...
- 将连接数据库的地址写在web.config里面,后台直接调用
- 第九章 限制性图谱和正则表达式
- 耗时1个月整理的这份英语资源!一次性全部分享给你,手慢无!
- android 模拟器 安装,夜神安卓模拟器安装环境
- Webix JavaScript UI 新版得心应手
- matlab数值微积分与方程数值求解,六、数值微积分与方程求解(MATLAB学习笔记)
- 系统架构设计师-考试大纲
- Windows下如何清除文件资源管理器搜索框中的搜索记录?
- flutter CustomPainter 简单绘制 三角形 多边形