如何修改JavaScript数组过滤代码,实现status对应的globalId双向过滤?
修改对象数组多条件过滤中的status判断逻辑
需求变更说明
原逻辑中status是布尔值,用于控制是否过滤出含有效globalId的项;现在调整为字符串枚举值:
- 当
status为connected时,仅保留含有效globalId(即obj.globalId存在且不为空串)的项 - 当
status为not connected时,仅保留不含有效globalId的项 - 未选择
status时,该过滤条件不生效
修改后的完整过滤代码
items.filter( (obj) => (!status || (status === 'connected' ? (obj.globalId && obj.globalId !== "") : !(obj.globalId && obj.globalId !== ""))) && (!deletedSwitch || obj.deleted === deletedSwitch) && (!filteredUsername || obj.userId === userId) && (!filteredType || obj.type === filteredType) && (!filteredVariety || obj.variety === filteredVariety) && (!filteredSize || parseInt(obj.size) === filteredSize) )
核心修改点
将原布尔值判断的(!status || (obj.globalId && obj.globalId !== ""))替换为基于字符串值的分支判断:
- 当
status为connected,校验obj.globalId有效 - 当
status为not connected,校验obj.globalId无效 - 若
status为空(未选择),则跳过该条件,不对globalId做过滤
内容的提问来源于stack exchange,提问作者Owenn
相关产品推荐
相关产品推荐

