You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选数组A中不在数组B的元素?代码问题排查

问题分析与解决方案

你的核心错误是错误地按数组索引位置对比元素,这完全不符合需求逻辑:
你当前的filter回调里用o?.patient?.uuid !== queueData?.data?.results[i]?.queueEntry.patient?.uuid,是拿visitsData第i项的患者uuid和queueData第i项的患者uuid对比,但两个数组的元素顺序、长度都没有对应关系,这种对比毫无意义,自然会返回全部visitsData内容。

正确实现步骤

  1. 先从queueData中提取所有存在的患者uuid,存入一个Set(查找效率远高于数组)
  2. 过滤visitsData,保留患者uuid不在这个Set里的项

修正后的代码

// 提取queue中所有患者的uuid到Set
const queuePatientUuids = new Set(
  queueData?.data?.results?.map(entry => entry?.queueEntry?.patient?.uuid) || []
);

// 过滤visitsData,保留不在队列中的患者
const data = visitsData?.data?.results?.filter(
  visit => !queuePatientUuids.has(visit?.patient?.uuid)
);

额外说明

  • 使用Set而不是数组存uuid,是因为Set.has()的时间复杂度是O(1),比数组的includes()(O(n))效率高很多,数据量大时优势明显
  • 加入|| []是为了处理queueData?.data?.results为undefined的情况,避免map报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:30:13