首页 > web前端 > js教程 > 正文

如何在多个 JavaScript 数组中查找匹配元素?

Patricia Arquette
发布: 2024-10-24 18:45:09
原创
803 人浏览过

How to Find Matching Elements Across Multiple JavaScript Arrays?

在多个 JavaScript 数组中匹配元素

问题

给定多个 JavaScript 字符串值数组,找到在 all 中相同出现的元素 数组。例如:

<code class="javascript">var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];</code>
登录后复制

预期输出:

<code class="javascript">['apple', 'fish', 'pizza']</code>
登录后复制

解决方案

要找到匹配的元素,我们可以使用数组方法的组合:

<code class="javascript">const arrays = [arr1, arr2, arr3];
const result = arrays.shift().filter((v) => {
  return arrays.every((a) => {
    return a.indexOf(v) !== -1;
  });
});</code>
登录后复制

步骤:

  1. 使用 arrays.shift() 从原始列表中删除第一个数组。
  2. 使用 .filter()第一个循环遍历每个元素 v 的数组。
  3. 对其余数组使用 .every() 来检查每个数组是否包含当前元素 v。
  4. 如果元素 v 存在在每个数组中,将其包含在结果数组中。

通过迭代地将这个逻辑应用于每个数组,我们可以有效地找到在 所有 提供的数组中相同出现的元素。

其他注意事项

重复元素处理:

提供的解决方案假设数组不包含重复元素。如果是这样,您可以按如下方式修改代码:

<code class="javascript">const result = arrays.shift().reduce((res, v) => {
  if (res.indexOf(v) === -1 &amp;&amp; arrays.every((a) => {
    return a.indexOf(v) !== -1;
  })) res.push(v);
  return res;
}, []);</code>
登录后复制

此代码使用 .reduce() 而不是 .filter()。它检查结果数组中的重复项,并仅添加每个数组中存在的唯一元素。

任意数量的数组:

该解决方案旨在与未知数量的数组。通过使用 arrays.shift(),我们可以顺序比较第一个数组和其余数组,直到处理完所有数组。

以上是如何在多个 JavaScript 数组中查找匹配元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!