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

如何高效过滤数组以获取存在于usersUpdated但不在oldUsers的用户?

实现方案

你可以通过以下两种常用方式实现需求,核心逻辑是判断usersUpdated中的用户唯一标识(默认使用ID)是否不存在于oldUsers的标识集合中:

方案1:使用Set做ID缓存(推荐,大数据量下性能更好)

const oldUsers = [
  { name: 'Fede', id: 1 },
  { name: 'Marce', id: 2 },
];

const usersUpdated = [
  { name: 'Fede', id: 1 },
  { name: 'Marce', id: 2 },
  { name: 'Ale', id: 3 },
  { name: 'Julian', id: 4 },
];

// 先把旧用户的id存成Set,单次查找时间复杂度O(1)
const oldUserIdSet = new Set(oldUsers.map(user => user.id));
// 过滤新用户数组,只保留id不在旧集合里的项
const newUsers = usersUpdated.filter(user => !oldUserIdSet.has(user.id));

执行后newUsers的值和你给出的expectedValue完全一致。

方案2:直接使用Array.some判断(适合小数据量,写法更简洁)

const newUsers = usersUpdated.filter(updateUser => 
  !oldUsers.some(oldUser => oldUser.id === updateUser.id)
);

如果你的实际业务场景不是用ID作为用户唯一标识,把判断逻辑中的id替换为对应的唯一字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:18:04