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

如何对比两个对象数组,返回未被标记删除的成员ID数组

筛选未标记删除的成员ID数组

核心思路

先把标记待删除的用户ID提取成一个查询效率更高的集合,再从原始成员数组里过滤出不在这个集合里的用户,最后提取他们的ID即可。

实现代码

// 提取待删除用户的ID,存入Set提升查找效率
const deletedIds = new Set(checkedIds.map(user => user.ID));

// 过滤出未标记删除的用户,再提取他们的ID
const remainingIds = teamMembers
  .filter(user => !deletedIds.has(user.ID))
  .map(user => user.ID);

示例验证

对应你给出的场景:

  • teamMembers = [{ID:45, Name:'xxx', Email:'xxx'}, {ID:78, Name:'yyy', Email:'yyy'}, {ID:2, Name:'zzz', Email:'zzz'}]
  • checkedIds = [{ID:45, Name:'xxx', Email:'xxx'}]

运行代码后,deletedIds为Set {45},最终remainingIds会得到[78, 2],完全匹配需求。

补充说明

用Set而非数组includes的原因是,当数据量较大时,Set.has()的时间复杂度为O(1),比数组includes()的O(n)效率高很多,能避免性能瓶颈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:20:46