Typescript中如何判断对象数组属性值是否存在于另一数组中
Typescript数组匹配筛选实现方案
你可以根据数据量大小选择以下两种实现方式:
方案1:适合小数据量场景
直接使用数组自带的filter+includes方法,代码最简:
// 直接过滤出productId存在于proposalProducts的元素 const matchedResult = searchFilteredData.filter(item => proposalProducts.includes(item.productId) );
方案2:适合大数据量场景
如果proposalProducts元素较多,先转成Set再查询可以大幅提升性能,时间复杂度从O(n*m)降到O(n+m):
// 先将productId集合转为Set,查询效率更高 const proposalIdSet = new Set(proposalProducts); const matchedResult = searchFilteredData.filter(item => proposalIdSet.has(item.productId) );
补充类型说明
如果需要严格的TS类型校验,可以提前给两个数组定义类型:
interface ProductItem { productId: number; carrierId: number; // 其余自定义字段 } const searchFilteredData: ProductItem[] = []; const proposalProducts: number[] = [];
内容的提问来源于stack exchange,提问作者noclist
相关产品推荐
相关产品推荐

