J*aScript 查找多个数组中至少两个数组的交集


javascript 查找多个数组中至少两个数组的交集

本文介绍如何使用 J*aScript 从包含多个数组的数组中,找出至少在指定数量(例如两个)数组中都存在的元素。通过使用 Set 和数组方法,我们将实现一个高效且可扩展的解决方案,避免了传统方法中需要多次循环比较的复杂性。该方法可以灵活地调整需要共同存在的数组数量,适用于各种数据处理场景。

在处理包含多个数组的数组时,经常需要找到至少在一定数量的数组中都存在的元素,即求交集。 例如,给定一个数组 [["google", "amazon", "reddit"], ["telegram", "reddit", "discord"], ["firefox", "telegram", "chrome"]],我们希望找出至少在两个数组中都存在的元素,结果应该是 ["reddit", "telegram"]。 以下代码演示了如何使用 J*aScript 实现此功能:

const input = [["google", "amazon", "reddit"], ["telegram", "reddit", "discord"], ["firefox", "telegram", "chrome"]];

function findIntersection(arr, minCount = 2) {
  // 移除子数组中的重复项
  const uniqueInSub = arr.map(_ => [...new Set(_)]);

  // 创建包含所有值的扁平数组
  const uniqueInSubFlat = uniqueInSub.flat();

  // 获取唯一值列表
  const values = [...new Set(uniqueInSubFlat)];

  // 创建 [value, count] 对的数组,其中 count 是 value 在所有子数组中出现的次数
  const pre1 = values.map(value => [value, uniqueInSubFlat.filter(subValue => subValue === value).length]);

  // 过滤出 count 大于等于 minCount 且小于数组长度的 [value, count] 对
  const pre2 = pre1.filter(([, count]) => count >= minCount && count < arr.length);

  // 提取结果数组
  const result = pre2.map(([value]) => value);

  return result;
}

const result = findIntersection(input);
console.log(result); // 输出: ["reddit", "telegram"]

// 查找至少在一个数组中存在的元素
const resultOne = findIntersection(input, 1);
console.log(resultOne); // 输出: ["google", "amazon", "reddit", "telegram", "discord", "firefox", "chrome"]

代码解释:

  1. findIntersection(arr, minCount = 2) 函数: 接收一个数组 arr 和一个可选参数 minCount,表示元素至少需要在多少个数组中存在。 默认为 2。
  2. uniqueInSub = arr.map(_ => [...new Set(_)]): 使用 map 遍历输入数组,并使用 Set 移除每个子数组中的重复项。 这样可以确保每个元素在每个子数组中只被计算一次。
  3. uniqueInSubFlat = uniqueInSub.flat(): 将所有子数组扁平化为一个数组,方便后续统计每个元素的出现次数。
  4. values = [...new Set(uniqueInSubFlat)]: 获取所有唯一值的列表。
  5. pre1 = values.map(value => [value, uniqueInSubFlat.filter(subValue => subValue === value).length]): 使用 map 遍历唯一值列表,并为每个值创建一个 [value, count] 对,其中 count 是该值在扁平数组中出现的次数。
  6. pre2 = pre1.filter(([, count]) => count >= minCount && count 过滤 pre1 数组,只保留 count 大于等于 minCount 且小于数组长度的 [value, count] 对。 count
  7. result = pre2.map(([value]) => value): 使用 map 提取 pre2 数组中的 value,得到最终结果数组。

注意事项:

PHP经典实例(第二版) PHP经典实例(第二版)

PHP经典实例(第2版)能够为您节省宝贵的Web开发时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解。《PHP经典实例(第2版)》将PHP的特性与经典实例丛书的独特形式组合到一起,足以帮您成功地构建跨浏览器的Web应用程序。在这个修订版中,您可以更加方便地找到各种编程问题的解决方案,《PHP经典实例(第2版)》中内容涵盖了:表单处理;Session管理;数据库交互;使用We

PHP经典实例(第二版) 453 查看详情 PHP经典实例(第二版)
  • minCount 参数可以灵活调整,以满足不同的需求。 例如,如果需要查找至少在一个数组中存在的元素,可以将 minCount 设置为 1。
  • 该方法使用了 Set 数据结构,可以高效地移除重复项。
  • 该方法的时间复杂度主要取决于数组的长度和唯一值的数量。 在大多数情况下,该方法都是高效的。

总结:

通过使用 Set 和数组方法,我们可以轻松地从包含多个数组的数组中找到至少在指定数量的数组中都存在的元素。 该方法高效、可扩展且易于理解,适用于各种数据处理场景。

以上就是J*aScript 查找多个数组中至少两个数组的交集的详细内容,更多请关注其它相关文章!


# 适用于  # 辽阳网站优化公司选哪家  # seo任务优化  # 湖南全网营销推广  # 实体老板线上推广营销  # 河南seo优化多少钱  # seo是人工智能吗  # 南京白帽seo技术  # 河北互联网网站推广好处  # seo公司活动. 湖南岚鸿  # 玉溪营销推广推荐公司  # 如何使用  # 数据处理  # javascript  # 遍历  # 移除  # 在一  # 数据结构  # 中都  # 多个  # 组中  # red  # google  # go  # java 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 之了课堂app做题入口  《长生:天机降世》火塔小怪大全  批改网网页版登录 批改网电脑版学生登录入口  b站怎么查看视频的码率_b站视频码率查看方法  在PySimpleGUI中实现键盘按键绑定按钮事件  获取WooCommerce产品在后台编辑页面的分类ID  Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法  《磁力猫》最好用的磁官网  《雷电模拟器》截图方法介绍  《虎扑》取消评分记录方法  如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践  Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】  win11自带录屏文件保存在哪里 Win11 Game Bar录制视频默认路径【分享】  《U校园》学生登录入口2025  SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱  优化响应式标题底部边框:CSS实现技巧与最佳实践  Windows Audio服务启动失败怎么办_电脑没声音的终极服务修复法【修复】  学习通网页版个人登录_学习通网页版个人账户登录入口  深入理解随机递归函数的确定性:内部节点、叶节点与时间复杂度分析  在PHP环境中正确加载HTML资源:CSS样式与图片路径指南  todesk如何添加信任设备_todesk信任设备设置教程  windows10怎么设置电源按钮_windows10按下电源键功能修改  《美篇》取消会员自动续费方法  PHP页面重载时变量值不重置的实现方法  使用jQuery精确检测除指定元素外任意位置的点击事件  mysql数据库索引类型有哪些_mysql索引类型解析  C#解析并修改XML后保存 如何确保格式与编码的正确性  顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南  漫蛙app官方版手机正版入口-漫蛙漫画manwa在线漫画正版入口  《狐友》联系客服方法  mysql怎么查询数据_mysql基础查询语句使用教程  byrutor直接访问入口 byrutor官方游戏库  React应用中Commerce.js数据加载与状态管理最佳实践  百度竞价WAP显示PC链接问题  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  realme 10 Pro息屏方案_realme 10 Pro省电策略  C++如何实现矩阵乘法_C++二维数组矩阵运算代码示例  稻壳阅读器官方直达网址链接 稻壳阅读器文档阅读平台主页资源入口  windows10怎么更改下载路径_windows10默认存储位置修改教程  《百果园》充值余额方法  Golang如何实现HTTP请求重试机制_Golang HTTP请求错误处理策略  b站怎么设置动态仅粉丝可见_b站动态粉丝可见设置方法  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  申通快递查询 申通物流快递单实时查询入口  抖音如何进行蓝V认证 抖音企业号申请所需资料与流程  腾讯QQ邮箱官方入口 QQ邮箱网页版登录平台  以下哪一个是适应长期护理制度发展而设立的新职业  优化 WooCommerce 产品价格显示与自定义短代码集成  FotoBalloon图片左右镜像教程  苹果电脑如何快速截图并编辑 苹果电脑截屏标注快捷操作 

 2025-10-07

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.