本文介绍如何使用 javascript 的 `filter()` 与 `includes()` 方法,高效筛选出对象数组中 `id` 值未出现在给定数字数组中的元素,并提供可直接运行的代码示例与关键注意事项。
在实际开发中,我们常需比对两个数据集——例如,从一组位置对象中排除已被选中的 ID。给定一个目标 ID 数组(如 [60, 1456])和一个对象数组(每个对象含 id 字段),目标是找出所有 id 不在此数组中的对象。
核心思路是:对对象数组调用 .filter(),对每个对象解构出 id,再用 !ids.includes(id) 判断该 id 是否不存在于目标 ID 数组中。返回值即为不匹配项组成的全新数组。
以下是完整、可执行的示例代码:
const ids = [60, 1456];
const data = [
{ id: 60, itemName: 'Main Location - Cleveland' },
{ id: 1453, itemName: 'Second Location - Cleveland' },
{ id: 1456, itemName: 'Third Location - New York' }
];
const unmatched = data.filter(({ id }) => !ids.includes(id));
co
nsole.log(unmatched);
// 输出: [{ id: 1453, itemName: 'Second Location - Cleveland' }]✅ 优势说明:
⚠️ 注意事项:
const idSet = new Set(ids);
const unmatched = data.filter(({ id }) => !idSet.has(id));综上,该方法简洁、可靠,是处理此类“对象属性是否包含于某值集合”判断任务的标准实践。