JS中如何检测Set集合内是否包含具有指定id的对象
实现说明
你给出的最终代码可以正确实现需求,但存在性能冗余问题:forEach 方法无法中途终止遍历,哪怕已经找到id为4的对象,仍然会遍历完Set内的所有元素,当Set存储数据量较大时会产生不必要的性能开销。
优化实现方案
方案1:for...of实现(性能最优)
使用for...of遍历Set,匹配到目标对象后直接返回结果,无需遍历剩余元素,也不需要单独判断Set长度为空的场景:
const hasObject = (myObjectSet: Set<MyObject>) => { for (const myObject of myObjectSet) { if(myObject.id === 4) { return true } } return false }
方案2:简洁语法实现(小数据量场景适用)
如果Set存储的元素数量较少,可以直接转数组调用原生some方法,代码更精简:
const hasObject = (myObjectSet: Set<MyObject>) => Array.from(myObjectSet).some(obj => obj.id === 4)
内容的提问来源于stack exchange,提问作者Adri HM
相关产品推荐
相关产品推荐

