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

JavaScript:根据值数组筛选对象数组中的匹配对象

如何根据ID数组筛选对象数组中的匹配项?

这需求挺常见的,用JavaScript的filter()配合includes()就能轻松解决,直接上可运行的代码:

const idArray = ["935", "933", "930"];
const objectsArray = [
  { name: "Kevin", color: "red", id: "935" },
  { name: "Ana", color: "white", id: "815" },
  { name: "Maria", color: "silver", id: "035" },
  { name: "Victor", color: "red", id: "935" },
  { name: "Vanessa", color: "red", id: "933" },
];

// 核心筛选逻辑
const filteredObjects = objectsArray.filter(obj => idArray.includes(obj.id));

console.log(filteredObjects);
// 输出结果正是你要的:
// [
//   { name: 'Kevin', color: 'red', id: '935' },
//   { name: 'Victor', color: 'red', id: '935' },
//   { name: 'Vanessa', color: 'red', id: '933' }
// ]

关键步骤解释:

  • filter()方法:它会遍历objectsArray里的每一个对象,只有当回调函数返回true时,当前对象才会被保留到结果数组中。
  • includes()方法:用来检查当前对象的id属性是否存在于idArray中,如果存在就返回true,对应的对象就会被筛选出来。

性能优化小技巧(针对大数据量场景):

如果你的idArray包含大量元素,includes()的查找效率会有点慢(因为数组查找是O(n)时间复杂度)。这时候可以把idArray转换成Set,Set.has()的查找速度是O(1),能显著提升筛选效率:

// 先把ID数组转成Set
const idSet = new Set(idArray);
// 用Set的has方法来判断
const filteredObjects = objectsArray.filter(obj => idSet.has(obj.id));

这样调整后,处理大规模数据时会顺畅很多哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:24:35