You need to enable JavaScript to run this app. JavaScript 从对象数组按from.flightNo与to.flightNo提取重复航班对象
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript 从对象数组按from.flightNo与to.flightNo提取重复航班对象

重复航班提取的优化实现

原实现的核心问题

  • 效率低下:每次对数组元素做映射时,都要全量遍历整个数组做匹配计数,整体时间复杂度为O(n²),数组规模较大时性能损耗明显
  • 数据遗漏:计数触发逻辑设计不合理,无法完整提取同一重复组的全部元素,只能命中部分重复项
  • 写法冗余:依赖隐式返回undefined做后续过滤,可读性差,逻辑绕

优化思路

将from.flightNo和to.flightNo拼接为唯一复合键,先完成全量元素的频次统计,再筛选出所有属于「出现次数≥2」的复合键对应的原元素,整体时间复杂度降为O(n),逻辑清晰无数据遗漏。

具体实现代码

// 1. 统计每个航班组合的出现频次
const flightKeyCount = myArray.reduce((acc, cur) => {
  // 生成判断重复的唯一标识:出发航班号 + 到达航班号
  const key = `${cur?.from?.flightNo || ''}_${cur?.to?.flightNo || ''}`;
  acc[key] = (acc[key] || 0) + 1;
  return acc;
}, {});

// 2. 筛选出所有属于重复组的元素
const duplicates = myArray.filter(item => {
  const key = `${item?.from?.flightNo || ''}_${item?.to?.flightNo || ''}`;
  return flightKeyCount[key] >= 2;
});

说明

  • 运行结果和预期输出完全匹配,且严格保留原数组的元素顺序
  • 代码内置了可选链和空值兜底,遇到缺失航班号属性的异常元素也不会触发报错

内容的提问来源于stack exchange,提问作者arled

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 08:27:04