JavaScript 中两个数组的交集可以通过不同的方式完成,例如使用 Set、展开运算符、filter() 方法或includes() 方法。每种方法都有其自身的优点和缺点,重要的是要考虑哪种方法最适合给定的任务。如果您想创建一个仅包含两个数组中找到的元素的新数组,则两个数组的交集会很有帮助。
让我们举个例子 –
arr1 = [ 2, 5, 7, 9, 11, 13, 15, 17 ] arr2 = [ 1, 3, 5, 7, 11, 13, 16, 17 ] intersecArr = [ 5, 6, 11, 13, 17 ]
上面我们定义了两个数组arr1和arr2,包括两个数组中存在的一些相同的值。两个数组的交集是 antersecArr。
让我们讨论一下在 JavaScript 中使用两个数组的交集创建数组的方法。
方法一:使用filter()和includes()方法
我们可以使用filter()和includes()方法对两个数组执行交集。 filter() 方法接受一个函数作为其参数,并将其应用于数组中的每个元素。该函数应返回一个布尔值 true 或 false,指示该元素是否应包含在新数组中。在我们的例子中,我们希望元素都存在于两个输入数组中,因此我们将使用includes()方法来检查该元素是否存在于另一个数组中。
语法
下面是使用 filter() 和 include() 方法通过两个数组的交集创建新数组的语法 –
let intersection = arr1.filter(x => arr2.includes(x));
filter() 方法接受回调函数作为其参数。此回调函数应用于第一个数组 (arr1) 的每个元素,并使用includes() 方法检查当前元素 (x) 是否存在于第二个数组 (arr2) 中。如果当前元素 (x) 存在于第二个数组 (arr2) 中,则它会包含在新数组(交集)中。
如果当前元素 (x) 不存在于第二个数组 (arr2) 中,则将其从新数组(交集)中排除。最终结果是一个新数组(交集),仅包含 arr1 和 arr2 中存在的元素。
示例
在下面的示例中,我们创建两个数组 arr1 和 arr2,每个数组都有五个元素,其中三个元素相同。然后使用过滤器和包含方法创建两个数组中公共元素的新数组。
<html>
<head>
<title>Creating an Array using Intersection of two Arrays using Filter() and Includes() methods</title>
</head>
<body>
<p id="arr1"></p>
<p id="arr2"></p>
<p id="result"></p>
<script>
let arr1 = [5, 6, 8, 11, 15];
let arr2 = [3, 5, 8, 11, 17];
document.getElementById("arr1").innerHTML = "Array 1: " + JSON.stringify(arr1);
document.getElementById("arr2").innerHTML = "Array 1: " + JSON.stringify(arr2);
const intersection = arr1.filter(x => arr2.includes(x));
document.getElementById("result").innerHTML = "Intersection of Array1 & Array 2: " + JSON.stringify(intersection);
</script>
</body>
</html>
上面的代码将创建一个新数组,intersectionArray,它仅包含两个输入数组中都存在的元素。
方法2
在这种方法中,我们首先从 arr1 的元素创建一个新的集合对象。它删除任何重复的元素。然后使用扩展运算符将集合对象转换为数组。该数组没有重复元素。现在我们使用filter()和include()方法来执行交集。进一步的过程与第一种方法相同。
let intersection = [...new Set(arr1)].filter(x => arr2.includes(x));
上面的语法创建了一个新的数组“intersection”。从 arr1 中删除所有重复项后,它包含 arr1 和 arr2 中存在的元素。
示例
<html>
<head>
<title>Creating an Array using Intersection of two Arrays using Spread Operator and Filter() method</title>
</head>
<body>
<p id="arr1"></p>
<p id="arr2"></p>
<p id="result"></p>
<script>
let arr1 = [4, 8, 12, 16, 20, 28];
let arr2 = [8, 16, 20, 24, 28, 30];
document.getElementById("arr1").innerHTML = "Array 1: " + JSON.stringify(arr1);
document.getElementById("arr2").innerHTML = "Array 1: " + JSON.stringify(arr2);
let intersection = [...new Set(arr1)].filter(x => arr2.includes(x));
document.getElementById("result").innerHTML = "Intersection of Array1 & Array 2: " + JSON.stringify(intersection);
</script>
</body>
</html>
方法 3:使用 Set
在这种方法中,首先,我们使用 new Set() 构造函数将数组转换为集合。然后使用 for…of 循环迭代第二组的元素。然后使用 has() 方法检查该元素是否在第一个 Set 中。如果该元素存在于第一个 Set 中,则使用 push() 方法将该元素添加到交集数组中。
示例
<html>
<head>
<title>Creating an Array using Intersection of two Arrays using Set</title>
</head>
<body>
<p id="arr1"></p>
<p id="arr2"></p>
<p id="result"></p>
<script>
function doIntersection(arr1, arr2) {
const setFirst = new Set(arr1);
const setSecond = new Set(arr2);
let intersection = [];
for (let i of setSecond) {
if (setFirst.has(i)) {
intersection.push(i);
}
}
return intersection;
}
const arrFirst = [4, 6, 8, 10, 12];
const arrSecond = [4, 5, 8, 12, 15];
document.getElementById("arr1").innerHTML = "Array 1: " + JSON.stringify(arrFirst);
document.getElementById("arr2").innerHTML = "Array 1: " + JSON.stringify(arrSecond);
const interResult = doIntersection(arrFirst, arrSecond);
document.getElementById("result").innerHTML = "Intersection of Array1 & Array 2: " + JSON.stringify(interResult);
</script>
</body>
</html>
在本教程中,我们借助示例讨论了使用两个数组的交集创建数组的三种方法。在第一种方法中,我们使用filter()和include()方法,而在第二种方法中,除了filter和include之外,我们还使用展开运算符和Set。在第三种方法中,我们创建了一个自定义函数来执行此任务。
以上就是如何在 JavaScript 中使用两个数组的交集创建数组?的详细内容,更多请关注双恒网络其它相关文章!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
9.本站默认解压密码为:www.sudo1.com
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
云资源网 » 如何在 JavaScript 中使用两个数组的交集创建数组?
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 你们有qq群吗怎么加入?